C语言:输出500以内的完数
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子是1,2,3,且6=1+2+3,因此6是完数。编程找出500以内的所有完数,并按下面的格式输出其因子:6是一个完数,它的因子是1,2,3。代码:#include<stdio.h>#define MAX 500int main(void){int a[100];//用来储存x的因子int x=2;//咱从2开始来找‘完数
·
一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如,6的因子是1,2,3,且6=1+2+3,因此6是完数。
编程找出500以内的所有完数,并按下面的格式输出其因子:
6是一个完数,它的因子是1,2,3。
代码:
#include<stdio.h>
#define MAX 500
int main(void)
{
int a[100];//用来储存x的因子
int x=2;//咱从2开始来找‘完数’
for(;x<=MAX;x++)
{
int sum=0;//将x的因子加起来
int k=0;//用来帮助啊a[]储存因子
//将x因子加起来且分别按顺序存入a[]
for(int i=1;i<x;i++)
{
if(x%i==0)//x%i==0说明i是x的因子
{
sum+=i;//将x的因子加起来
a[k]=i;//存x的因子
k++;//把a[]移到下一位
}
}
//判断x是否是完数,如果是便打印出x并遍历a[]
if(sum==x)
{
printf("%d是一个完数,它的因子是",x);
for(int t=0;t<k;t++)
{
//要注意一下输出的格式,所以下面弄个if和else
if(t<k-1) printf("%d,",a[t]);
else if (t=k-1) printf("%d。",a[t]);
}
printf("\n");
}
}
return 0;
}
运行结果:

今天上午上啦C语言课,这是课堂实验的一道题,当时俺‘哐当哐当’敲得老快了,但是感觉可读性不太高(哈哈,int随手拈来,命名随意,还没有注释!!太不讲‘码德了(〃´-ω・) ’),所以我下午就把它完善了一下,总算好看点啦!!
(附上上午滴反面教材)
更多推荐
所有评论(0)