大一新生又来惹,c语言QAQ

img


#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,d;
a=1;
b=1;
d=0;
while(a<=5000)
{while(b<=(a-1))
{c=a%b;
if(c=0)
{d=d+b;
b=b+1;}
else
b=b+1;}
if(a=d)
{printf("%d",a);
a=a+1;}
else
a=a+1;}
return 0;
}
这是自己编的一个但是错误好像有点大QAQ


#include<stdio.h>
#include<math.h>
int main()
{
    int a, b, c, d;
    a = 1; 
    b = 1;
    d = 0;
    while (a <= 5000)
    {
        while (b <= (a - 1))
        {
            c = a%b;
            if (c == 0)
            {
                d = d + b;
                b = b + 1;
            }
            else
                b = b + 1;
        }
        if (a == d)
        {
            printf("%d\n", a);
            a = a + 1;
        }
        else
            a = a + 1;
        b = 1;
        d = 0;
    }
    return 0;
}

我改了一下你的代码,看看吧, 这样就行了

c==0
a==d


#include<stdio.h>
int main()
{
    int i, j, s;  /*变量i控制选定数范围,j控制除数范围,s记录累加因子之和*/
    for( i=2; i<=1000; i++ )
    {
        s=0;  /*保证每次循环时s的初值为0*/
        for( j=1; j<i; j++ )
        {
            if(i%j == 0)  /*判断j是否为i的因子*/
                s += j;
        }
        if(s == i)  /*判断因子这和是否和原数相等*/
            printf("%d\n", i);
    }
    return 0;
}