您的位置:首页 > 其它

1025-完数

2013-11-21 22:44 211 查看
描述

自然数中,完数寥若晨星,请在从1到某个整数范围中打印出所有的完数来。所谓“完数”是指一个数恰好等于它的所有不同因子之和。例如,6是完数,因为6=1+2+3。而24不是完数,因为24≠1+2+3+4+6+8+12=36。

输入

输入数据中含有一些整数n(1<n<10000)。

输出

对于每个整数n,输出所有不大于n的完数。每个整数n的输出由n引导,跟上冒号,然后是由空格开道的一个个完数,每个n的完数列表应占独立的一行。

样例输入

100

5000

样例输出

100: 6 28

5000: 6 28 496

#include<stdio.h>
#include<math.h>
int main()
{
int n,p,i,t1,t2,temp;
while(scanf("%d",&n)!=EOF)
{

printf("%d:",n);
for(p=2;;p++)
{
t1=(int)pow(2,2*p-1);
t2=(int)pow(2,p-1);
if(t1-t2>n)
break;
temp=(int)pow(2,p)-1;

for(i=2;i<=(int)sqrt(temp);i++)
{
if(temp%i==0)
break;

}
if(i>(int)sqrt(temp))
printf(" %d",t1-t2);
}
printf("\n");
}

}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: