3346 - 习题5-9 完数

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 12 MB

一个数如果恰好等于它的因子和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,所以6是“完数”。

编程输出1000以内的所有完数,每个完数输出一行,并按下面的格式输出其因子:

6 its factors are 1,2,3

题目输入

题目输出

每个完数输出一行,并按下面的格式输出其因子:

? its factors are ?,?,?

 

输入/输出样例

输入格式

输出格式

6 its factors are 1,2,3
28 its factors are 1,2,4,7,14 
496 its factors are 1,2,4,8,16,31,62,124,248 

C语言解答

#include <stdio.h>
int main()
{
	int j, k, s, i, a[20], b;
	for (j = 1;j <= 1000;j++ )
	{
		i = 0;
		s = 0;
		for (k = 1;k < j;k++)
		{
			if (0 == (j%k))
				s = s + k;
		}
		if (s == j)
		{
			printf("%d its factors are ", j);
			for (k = 1;k < j;k++ )
			{
				if (0 == (j%k))
				{
					a[i] = k;
					i++;
				}
			}
			for (b = 0;b < i;b++ )
			{
				if (b != (i-1))
					printf("%d,", a[b]);
				else if (6 == j)
					printf("%d\n", a[b]);
				else
					printf("%d \n", a[b]);
			}
		}
	}
} 

C++解答

#include<iostream>
using namespace std;
int main()
{
	int t=0;
	for (int i=6; i<=1000; i++)
	{
		int sum=0;
		for (int j=1; j<=i/2; j++)
			if (i%j==0) sum+=j;
		if (i==sum)
		{
			t++;
			cout<<i<<" its factors are "<<1;
			for (int j=2; j<=i/2; j++)
				if (i%j==0) cout<<","<<j;
			if (t==1) cout<<endl;
			else cout<<" "<<endl;
		}
	}
	return 0;
}