找出1000内所有的完数(c语言)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
找出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");
}
}
}。