/*求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
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语言编写的程序,该程序能够找出1000以内所有的完数,并列出其所有因子。完数是指一个数等于其所有因子之和的数,如6=1+2+3。程序通过双重循环实现,外层循环遍历1到1000的所有数,内层循环则找出每个数的因子并累加,最后比较累加和是否等于原数。
2787

被折叠的 条评论
为什么被折叠?



