程序我已编好为什么只能输出1行?不能输出28 和496?求大神解答,帮我找程序的漏洞
#include<stdio.h>
#include<math.h>
int main ()
{int i,j,k;
int sum=1;
printf("完数如下");
for(j=6;j<1000;j++)
{
for(i=2;i<=sqrt(j);i++)
{if(j%i==0)
sum=sum+i+j/i;}
if(sum==j)
{printf("\n%d its factors are:1",sum);
for(k=2;k<=sqrt(sum);k++)
{if(sum%k==0)
printf(",%d,%d",k,sum/k);}}
}
}
方法不同,我一次输出2个,数字大小位置不如你的整齐,不过题目没要求就算了吧
追答不是说输出,而是计算是否是完数的方法,需要小于j/2,而不是sqrt(j)。
拿6来说,3是6的因子,但是3却大于sqrt(6)
/*
完数如下
6 its factors are:1,2,3
28 its factors are:1,2,4,7,14
496 its factors are:1,2,4,8,16,31,62,124,248
Press any key to continue
*/
#include <stdio.h>