c语言学习记录--求出1000以内所有完数,并输出其因子,第一次:#include<stdio.h>voidmain(){intm,n,sum=0;//inta[10];for(m=1;m<100;m++){for(n=1;n<m;n++){if(m%n==0){sum=sum+n;//i++;}} if(sum==m) { printf("%dits
include<stdio.h> main(){ int i,j,sum;for(i=2;i<1000;i++) //完全数i的范围2-1000 { sum=0;for(j=1;j<=i/2;j++) //求i的因子,j<=i/2为了减少循环次数 { if(i%j==0) //如果i除以j的余数为0,就说明是因子 sum=sum+j;//求因子的和 } if(sum==i) //如果因子...
int main(){ int i,n,sum;// for(n=1;n<=1000;n++){ sum=0;for(i=1;i<n;i++){ if(n%i==0){sum=sum+i;} //if(sum==n)//{printf("%4d",n);} } if(sum==n){printf("%4d",n);} } return 0;}
i<=m 改为 i< m 还有 "%d"加个空格或加个‘,’即可。改正后运行通过,如下:include <stdio.h> void main(){ int m,i,s;for(m=1;m<=1000;m++){ s=0;for(i=1;i< m;i++)if(m%i==0)s=s+i;if(s==m)printf("%d, ",s);} } ...
int main(){ int a,sum,m,s,n,x;for(a=1;a<=1000;a++){ sum=0;//sum每次从0开始 m=1; //这里每次m都要从1开始 while(m<a){ s=a%m;if(s==0)(sum=sum+m);m=m+1;} if(sum==a){ printf("%d its factor are:",a);n=1; //这里每次n都要从1开始 while(n...
1、变量i的for循环里,累加部分错了,n++改为i++ 2、逻辑错误,将if(s==n)放在累加的循环里是不正确的,也许存在最终的s>n的情形,这会导致误判 3、逻辑错误,这段程序只能输出最小的一个完数。正确的做法是,把循环内部的return改为输出语句,每次得到解后不是退出函数而是输出结果并继续计算 ...
int perfectNumber(int n) { int i,sum = 1;for(i = 2; i <= n/2; ++i)if(n % i == 0) sum += i;return (sum == n);} int main() { int i;for(i = 2; i <= 10000; i++)if(perfectNumber(i)) printf("%d ",i);printf("\n");return 0;} ///...