【题目】 C语言题目试编程求解1000以内的完全数。 如果一个数恰好等于它的因子之和,则称该数为完全数。 如6=1+2+3(3)用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。在得到正确结果后,请修改程序使所设的 初始值由1.5改变为100、 1000、 10000,再运行,观察结果,分析不同的初值对结果有没有影响,...
完全数是除自身外的所有因子之和与自身相等的数。用一个for循环检查2至1000的偶数(迄今为止发现的完数全是偶数),若符合条件则输出此数。检查时,用另一for循环计数变量从2开始步长为1至此数的一半去除此数,能整除的累加求和(1因子不用检查,直接计入和),最后与此数比较是否相等,相等的则是完数。...
int i,j,sum=1;int b[100];for(i=3;i<=1000;i++){ sum=1;int k=0;for(j=2;j<i;j++)if( i%j==0) {sum+=j;b[k++]=j;} if(i==sum){ printf("%d its factors are %d",i,b[0]);for(int a=1;a<k; a++)printf(",%d",b[a]);printf("\n");} } } ...
int i,n;for (i = 2; i <=1000; i++){ if (perfect(i))printf("%5d", i);} }
1、变量i的for循环里,累加部分错了,n++改为i++ 2、逻辑错误,将if(s==n)放在累加的循环里是不正确的,也许存在最终的s>n的情形,这会导致误判 3、逻辑错误,这段程序只能输出最小的一个完数。正确的做法是,把循环内部的return改为输出语句,每次得到解后不是退出函数而是输出结果并继续计算 ...