完数
Problem Description
完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14。
本题的任务是判断两个正整数之间完数的个数。
本题的任务是判断两个正整数之间完数的个数。
数据量小,直接算就行,求因子的方法可以稍微优化一下。
#include <stdio.h>
int wan(int a)
{
int i,s=0,n=0;
for(i=1;i<=a/2;i++)
{
if(a%i==0)
s+=i;
}
if(s==a)
return 1;
else
return 0;
}
int main ()
{
int m,j,n1,n2,q;
while(scanf("%d",&m)!=EOF)
{
while(m--)
{
scanf("%d%d",&n1,&n2);
if(n1>1&&n1<10000&&n2>1&&n2<10000)
{
int sum=0;
if(n1>n2)
{
q=n1;
n1=n2;
n2=q;
}
for(j=n1;j<=n2;j++)
{
sum=sum+wan(j);
}
printf("%d\n",sum);
}
}
}
return 0;
}