求1000之内所有“完数”(注:C程序设计(第四版) 谭浩强/著 P141-9)

作者在 2015-04-27 08:54:54 发布以下内容

求1000之内所有“完数”,所谓的“完数”是指一个数恰好等于它的所有因子之和。例如,6是完数,因为6=1+2+3。要求输出形式为 6 its factors are 1,2,3  (注:C程序设计(第四版) 谭浩强/著 P141-9)


#include<stdio.h>
int main()
{
int sum;//sum用来储存分解的因子和
for(int i=1;i<=1000;i++)//从1循环到1000
{
sum=0;//对sum进行初始化赋值。


//思考?为什么sum在此处赋值,而不是在  定义int sum时直接赋值?



/*从1循环到i-1,寻找i的因子,如果j是i的因子,sum就自增j*/
for(int j=1;j<i;j++) 
if(i%j==0) sum+=j;//for循环后只有一句循环语句,可以不用{},也可以加上{},if也是如此
if(sum==i)/*如果i是完全数,则开始打印*/
{
printf("%d its factors are 1",i);//这句实际输出的是  “i(一个具体数)its factors are 1”
for(int m=2;m<i;m++) //for循环后只有一句循环语句,可以不用{},也可以加上{}
if(i%m==0) printf(",%d",m);//用循环打印i在2到i-1的因子
printf("\n");


}
}
return 0;
}



输出结果:

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


C语言 | 阅读 1839 次
文章评论,共0条
游客请输入验证码
文章归档
最新评论