C 丰富数字程序<=K

C 丰富数字程序<=K,c,algorithm,C,Algorithm,如果自然数n>0的真因子之和(不包括其自身)大于其自身,则称其为富足数。例如,数字12是一个富足的数字,因为它的除数之和是1+2+3+4+6=16,大于12本身。相比之下,16不是一个多数,因为它的除数之和是1+2+4+8=15,不大于16。我必须写一个程序,对于任何输入的自然数k,打印所有小于或等于k的大量数字。我编写了以下程序: #include <stdio.h> int main (void) { int k, sum=0, i, n; printf ("E

如果自然数n>0的真因子之和(不包括其自身)大于其自身,则称其为富足数。例如,数字12是一个富足的数字,因为它的除数之和是1+2+3+4+6=16,大于12本身。相比之下,16不是一个多数,因为它的除数之和是1+2+4+8=15,不大于16。我必须写一个程序,对于任何输入的自然数k,打印所有小于或等于k的大量数字。我编写了以下程序:

#include <stdio.h>

int main (void) {
    int k, sum=0, i, n;
    printf ("Enter k: ");
    scanf ("%d", &k);
    for (i=1; i<=k; i++) {
        int n=1;
        if (n%i==0);
        sum+=i;
    }
    if (n<sum);
    printf ("%d", &n);
    return 0;
}
#包括
内部主(空){
int k,和=0,i,n;
printf(“输入k:”);
scanf(“%d”和“&k”);
对于(i=1;i而言,此代码应该有效

#包括
内部主(空)
{
int k,i,j;
printf(“输入k:”);
scanf(“%d”和“&k”);
对于(i=1;i)
printf(“%d是丰富的\n”,i);
}
返回0;
}

此程序中没有错误,但输出不符合预期-您不认为此语句有问题吗?无论如何,请将
printf(“%d”,&i);
替换为
printf(“%d”,i)在第一个例子中,您必须删除
if
条件后面的分号。出于兴趣,您使用的是哪种编辑器?我不明白为什么2019年源代码可能缺少缩进。此外,启用警告也会有所帮助,比如可能会告诉您
int n=1;
在e for loop阴影外部变量。@user3386109:我强烈认为像
if(n%I==0);
这样的事情在2019年不可能发生。因为有警告,也因为下一行没有缩进。
#include <stdio.h>

int abundant (int n)
{
    int i, sum=0;
    for (i=0; i<n; i++)
        if (n%i==0) sum+=i;
    if (n<sum) return 1;
    else return 0;
}

int main (void)
{
    int i, k;
    printf ("Enter a number: ");
    scanf ("%d", &k);
    for (i=1; i<=k; i++) {
        if (abundant(i))
            printf ("%d",&i);
    }
    return 0;
}