完全数是其各因子之和正好等于本身的数,如6=1+2+3,28=1+2+4+7+14,所以6,8都是完全数,请编程找出2-20000内的所有完全数.输入整数n,输出第n个完全平方数。
第一种:
#include <stdio.h>
void main()
{
int i,n,s=0,k=0;
scanf("%d",&n);
for(i=2;i<=20000;i++,s=0)
{
for(int j=1;j<i;j++)
{
if(i%j==0)
s+=j;
if(i==s)
k++;
}
if(k==n) {printf("%d\n",i);
break;
}
}
}
第二种:
#include <stdio.h>
void main()
{
int i,n,s=0,k=0;
scanf("%d",&n);
for(i=2;i<=20000;i++,s=0)
{
for(int j=1;j<i;j++)
{
if(i%j==0)
s+=j;
}
if(i==s)
k++;
if(k==n) {printf("%d\n",i);
break;
}
}
}
这两个的区别就是if(i==s) k++;第一个中是在内循环,第二个是在外循环。但我觉得这两种应该都可以因为第一个是内循环每循环一次就进行判断i是否等于s,直到最后一次判断是否相等、但是第一种输出不出来结果,,请问为啥