求助:关于完全数的问题
偶是新手 今天研究了一天也没进展 先感谢下燕斑的论坛 那里的题目 :如果一个正整数的所有因数相加(不包括自身)仍等于自身,他就是完
全数 如6=1+2+3 现在要求输入一个数 输出所有从1到该数内的所有完全数
貌似很容易 一开始我用最笨的办法写 只能勉强算到8128,后来经过一下午
的改进 得到如下代码 效率至少提100倍 可还是只能算到8128 哭死 求各位
大侠帮助 谢谢先
#include <stdio.h>
int main(void)
{
long x;
long n;
long i;
long sum;
long k;
int Record=1;
int record=1;
scanf("%ld",&x);
if(x>5e18 || x<0)
{
return 0;
}
if(x<6)
{
printf("0\n");
return(0);
}
if(x>=6)
{
for(n=6 ; n<x ; n+=Record)
{
sum = 1;
k = n;
for(i=2 ; i<k ; i++)
{
if (n%i==0)
{
sum+=i+n/i;
k=n/i;
record=i;
if(sum>n)
{
break;
}
}
}
if(sum==n)
{
printf("%ld ",n);
Record=record;
}
}
}
printf("press any key to exit\n");
getch();
return(0);
}