每日训练之编程小程序 3 :统计1000以内的完数 (注释已补)

        如果一个数恰好等于它的因子之和,则称该数为“完全数”,即为完数,而本次编程的主要目的就是通过编程实现统计1000以内的所有完数。

        我在编写的时候思路如下,首先是要对1至1000的每个数都进行检测,那么这就是第一个for循环

        继续向下,我需要统计每个数的因数之和,一开始,我想到的用数组,将每一个数的因数统计在数组内,最后。再将数组内所有的因数求和以后,在进行比较。但是后来在数组编写的时候遇到了困难,始终无法达到我想要的结果,所以我最后放弃了这条思路。

        最后,用sum和+=运算符,直接将所有的因数求和之后与原本的数相比较,最终得出一个勉强还行的程序

/************************************************/
/**** 函数功能:统计1000内的所有完数        *****/
/************************************************/

#include <stdio.h>

int main ()

{
	
	int n = 0 ;
	int m = 0;
	int sum = 0;                         //定义sum统计因数之和
	
	for(n = 1; n <= 1000; n++)           //n遍取1-n
	{	
		sum = 0;                     //在每次循环开始sum置零,进行新的循环
		for(m = 1; m < n; m++)       //m取遍<n的每个实数
		{	
			if (n%m == 0)           
			{
				sum += m;   //sum为所有因数之和
			}			 
		}
		
		if (sum == n)                  
		{
		printf("%d\n",n);            //若该数为完数,将其输出
		}
	}
	
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值