C语言题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。

2024-11-08 06:12:39
有5个网友回答
网友(1):

#include
#include

void main()
{
int m,i,s;
for(m=1;m<=1000;m++) //从1开始到1000循环结束
{
s=0;//初始化因子之和s为0

for(i=1;i if(m%i==0) //如果m能整除i,则i为m的因子
s=s+i;//将因子累加

if(s==m) //如果因子之和等于这个数
printf("%d\t",s);//输出
}

getch();
}

运行结果:
6 28 496

网友(2):

先看运行截图:

把逗号改成加号即可

#include
int isws(int a);
main(){
int i=2,count,s=0;
for(;i<1000;i++){
count = isws(i);
if(count){
int a = 1;
s = 0;
printf("%d its factors are ",i);
for(a;a<=i/2;a++){
if(i%a==0){
printf("%d",a);
s++;
if(s < count) printf(","); //用来判断后面是否还有因子,没有因子就换行
else printf("\n");
}
}
}
}
return 0;
}

int isws(int a){ //判断是否是完数,如果是返回因子的个数
int i=2,sum=1,count=1;
for(i;i<=a/2;i++){
if(a%i==0) {
sum+=i;
count++;
}
}
if(sum == a) return count;
else return 0;
}

网友(3):

#include
#include

void main()
{
int m,i,s;
for(m=1;m<=1000;m++) //从1开始到1000循环结束
{
s=0;//初始化因子之和s为0

for(i=1;iif(m%i==0) //如果m能整除i,则i为m的因子
s=s+i;//将因子累加

if(s==m) //如果因子之和等于这个数
printf("%d\t",s);//输出
}

getch();
}

运行结果:
6 28 496

 171   


网友(4):

#include

#include

void
main()
{
int
m,i,s;
for(m=1;m<=1000;m++)
//从1开始到1000循环结束
{
s=0;//初始化因子之和s为0
for(i=1;i//寻找在1到m之间,有多少m的因子
if(m%i==0)
//如果m能整除i,则i为m的因子
s=s+i;//将因子累加
if(s==m)
//如果因子之和等于这个数
printf("%d\t",s);//输出
}
getch();
}
运行结果:
6
28
496

网友(5):

一个数如果恰好等于它的因子之和,这个数就称为完全数,
如 6,28,496 等。无穷多个 。