判断一个数是否是完数----(C每日一编程)

完数:n=因子和

例:6的因子有1,2,3

6=1+2+3,6就是完数

8的因子有1,2,4

但是8≠1+2+4,所以8不是完数。

编程分析:

①先找出所有因子;n%i==0就是因子

②把所有因子加进去;s=s+i

③判断和是否和这个总数n是不是相等;

④相等就是完数,不相等就不是完数。

注意:

1是任何一个数的因子,从1开始

任何一个数的最大因子是n/2,到n/2结束

然后判断因子之和是否等于整数n就行了。

是就返回1,不是就返回0。

参考代码:

int wan(int n) {
	int i, s = 0;
	for (i = 1; i <= n / 2; i++)
		if (n % i == 0)
			s += i;
	if (s == n)
		return 1;
	else
		return 0;
}
int main()
{
	int x;
	scanf("%d", &x);
	if (wan(x))
		printf("%d是完数", x);
	else
		printf("%d不是完数", x);
}

运行结果:

判断一个数是否是完数----(C每日一编程)_第1张图片

二,找出1000以内的完数并输出。

参考代码:

int wan(int n) {
	int i, s = 0;
	for (i = 1; i <= n / 2; i++)
		if (n % i == 0)
			s += i;
	if (s == n)
		return 1;
	else
		return 0;
}
int main()
{
	int x;
	for(x=1;x<=1000;x++)
	if (wan(x))
		printf("%d是完数", x);
}

输出结果:

判断一个数是否是完数----(C每日一编程)_第2张图片

以上仅供参考。

判断一个数是否是完数----(C每日一编程)_第3张图片

你可能感兴趣的:(C编程,C语言,C初学者,c语言,算法,数据结构)