c#一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.找出1000以内的所有完数

2024-11-08 01:33:57
推荐回答(1个)
回答1:

问题一: for(n=1;n<=i;n++)中n<=i不能取等号。举例,6%6==0,1+2+3+6>6。

问题二:for(n=1;n<=i;n++);后面的冒号需要取消,否则就没有循环体了。

问题三:for循环的循环体有多行时,请使用花括号。

 

修改了你的第二个代码

#include
#include
int main(){
    int i,n,s;
    for(i=2;i<=5000;i++){
        s=0;
        for(n=1;n            if(i%n==0)
                s=s+n;
        }
        if(s==i)
            printf("%d   ",i);
    }
    return 0;
}