找出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");
        }
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM