求指定范围内的完数个数
一、完数的定义及题目要求:
如果一个大于 1 的正整数的所有因子之和等于它的本身,则称这个数是完数,比如 6,28 都是完数:6=1+2+3;28=1+2+4+7+14。请判断两个正整数之间完数的个数。
题目分析:
1.首先要用循环遍历范围内的所有数,再加一个循环遍历范围内的每一个数的因子。方法:从一开始若对其本身求余等于0,则是因子。
2.找完一个数的因子后将其因子加起来若等于其本身,则这个数是完数,一直循环直至循环结束。
代码实现(含解析):
#include<stdio.h>
int main(void)
{
int m,n;
scanf("%d%d",&m,&n);//手动输入范围
int sum=0,count=0;
for(int i=m;i<=n;i++){
sum=0; //每次计算完一个数,sum都要归0进行下一个数的计算
for(int j=1;j<i;j++)
{
if(i%j==0)//对i求取余数若余数为0,则是其因子
{
sum+=j;
}
}
if(sum==i)//若因子相加等于其本身,则是完数
{
count++;//个数加一
}
} printf("%d",count);
return 0;
}
以上就是关于完数个数的实例解析。如果对你有帮助,记得点赞+关注哦!\n我的主页还有其他文章,欢迎学习指点。关注我,让我们一起学习,一起进步吧!