找出1000内所有的完数(c语言)

问题描述

编算法找出1000以内所有完数。
完数:其因数(因数不含自身)之和=自身的数。
例如:28的因子为1、2、4、7,14,而28=1+2+4+7+14。因此28是“完数”。编算法找出1000之内的所有完数,并按下面格式输出其因子:28 it’s factors are 1,2,4,7,14。

问题分析

1、这里不要质因数。

2、每个因数只记一次,如8的因数为1,2,4。

算法设计

1>顶层算法

for(i=2;i<n;i++)
  {      判断i是否是“完数”;
         如果是“完数”,则按格式输出;}

 

2>判断i是否是完数

s=1
for(j=2;j<i;j=j+1)
   if (i mod j=0)   s=s+j;   /*j是i的因数*/
If (s=i)   //i是“完数”;

 

完整代码如下:

#include<stdio.h>
int main(){
    int n,i,sum;
    for(n=1;n<1000;n++){
        sum=0;
        for(i=1;i<n;i++){
            if(n%i==0){
                sum+=i;
            }
        }
        if(sum==n){
            printf("%d的因数为",sum);
            for(i=1;i<n;i++){
                if(n%i==0){
                    printf("%d,",i);
                }
            }
            printf("\n");
        }
    }
}

 

posted @ 2020-06-22 13:08  兔奶糖  阅读(3441)  评论(0)    收藏  举报