C语言>>一个数如果恰好等于它的因子之和,这个数就称为“完数”。比如:6=1+2+3,因此6是完数。编程求出1000以内的完数。

使用工具:

Dev-c++ 5.11

解题思路:

该数最小为2,不超过1000;我们可以写个双循环,外层循环表示可能存在的完数的集合,内层循环表示可能存在的因子的集合,且因子最大也只能是完数的一半;在内层循环中 ,代码应当实现如果一个数(外层的)和另一个数(内层的)取余数恒为零,就记录下另一个数的累加。当退出内层循环时,判断累加的数的大小是否等于外层循环的数,即可得出完数。

参考代码:

#include<stdio.h>
int main()
{
	int num,yz,sum;
	for(num=2;num<1000;num++)
	{
		sum=1;
		for(yz=2;yz<=num/2;yz++)
		{
			if(num%yz==0)
			{
			 sum+=yz;
	       	}
		}
	
	if(sum==num)
	{
		printf("%d 的因数有1,",num);
		for(yz=2;yz<=num/2;yz++)
		{
			if(num%yz==0)
			{
				printf("%d, ",yz);
			}
		
		}
		printf("\n");
	  }
	
    }
	return 0;
}

运行结果:

 

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值