HDU_1406 完数

Problem Description
完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14。

本题的任务是判断两个正整数之间完数的个数。

 
Input
输入数据包含多行,第一行是一个正整数n,表示测试实例的个数,然后就是n个测试实例,每个实例占一行,由两个正整数num1和num2组成,(1<num1,num2<10000)
 
Output
对于每组测试数据,请输出num1和num2之间(包括num1和num2)存在的完数个数。
 
Sample Input
2
2 5
5 7
 
Sample Output
0 1
代码如下:
 #include <cstdio>
#include <cmath>
int pd(int num){
int ll=;
for(int i=;i<num;i++){
if(num%i==){
ll+=i;
}
}
if(ll==num)
return ;
else
return ;
}
int main()
{
int n;
scanf("%d",&n);
while(n--){
int num1,num2;
scanf("%d %d",&num1,&num2);
if(num1>num2){
int temp;
temp=num1;
num1=num2;
num2=temp;
}
int ans=;
for(int i=num1;i<=num2;i++){
if(pd(i)==){
ans++;
}
}
printf("%d\n",ans);
} return ;
}
思路解析:
          一定要读好题一定要读好题一定要读好题!重要的事情说三遍。本题最大的坑就是num1可以比num2大!注意到这一点本题就AC。
 
上一篇:bzoj 2527: [Poi2011]Meteors 整体二分


下一篇:nginx-2.nginx是什么