实验4-2-7 找完数(20 分)
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
输入格式:
输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。
输出格式:
逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。
#include <stdio.h>
/*
想了很久没有想到怎样按它要求的格式输出,所以凑合看
吧,如果有谁有办法完成题目要求的输出格式,希望能留
言告诉我,谢谢!
*/
int main(int argc, char *argv[]) {
int m,n;
int i,j=0,sum=0,t;
printf("请输入两个整数:");
scanf("%d %d",&m,&n);
printf("它们之间的完数有:");
if(m>n){
t=m;
m=n;
n=t;
}
for(;m<n;m++){
for(i=1;i<m;i++){
if(m%i==0){
sum=i+sum;
}
}
if(sum==m){
printf("%d ",m);
j++;
}
sum=0;
}
if(j==0){
printf("none");
}
return 0;
}
int m,n;
int i,j=0,sum=0,t;
printf("请输入两个整数:");
scanf("%d %d",&m,&n);
printf("它们之间的完数有:");
if(m>n){
t=m;
m=n;
n=t;
}
for(;m<n;m++){
for(i=1;i<m;i++){
if(m%i==0){
sum=i+sum;
}
}
if(sum==m){
printf("%d ",m);
j++;
}
sum=0;
}
if(j==0){
printf("none");
}
return 0;
}
该博客介绍了如何使用C语言编程找出介于两个正整数m和n之间的所有完数,即等于其因子之和(不包括自身)的数字,并以因子累加的形式展示。
6843

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



