求正整数a,b之间的完全数
完全数的定义:完全数是指把它所有的因为加起来等于他本身的数字
例如:6是一个完全数,6=1+2+3
分析:显然,一个完全数肯定是一个偶数。假设m是一个完全数,只需要在m/2的范围内查询他是不是一个完全数可以大大减少程序的运算次数!
//求a-b之间的所有完全数
#include<stdio.h>
int main()
{
int a,b,cnt,sum;
printf("请输入您要查询完全数的下限(一个正整数):\n");
scanf("%d",&a);
printf("请输入您要查询完全数的上限(一个正整数):\n");
scanf("%d",&b);
//big loop
while(a<b)
{
sum=0;
for(cnt=1;cnt<=a/2;cnt++)
{
if(a%cnt==0)
{
sum+=cnt;
}
}
if(sum==a)
{
printf("%d\t",a);
}
a++;
}
return 0;
}