HDU-1406 完数

http://acm.hdu.edu.cn/showproblem.php?pid=1406

                         完数

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 15365    Accepted Submission(s): 5592

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
 1 #include<stdio.h>
 2 int cmp(int n)
 3 {
 4   int i,s=0;
 5   for(i=1;i<n;i++)
 6   {
 7       if(n%i==0)
 8           s+=i;
 9   }
10   if(n==s)
11       return 1;
12   else
13       return 0;
14 }
15 int main()
16 {
17     int t,x,y,i,r,k;
18     scanf("%d",&t);
19     while(t--)
20     {
21           r=0;
22        scanf("%d%d",&x,&y);
23         if(x>y)
24         {
25             k=x;
26             x=y;
27             y=k;
28         }//题目说什么之间注意一定考虑大小。
29        for(i=x;i<=y;i++)
30         {
31             if(cmp(i)==1)
32                r++;
33         }
34         printf("%d\n",r);
35     }
36     return 0;
37 }

 
posted @ 2013-10-20 15:51  疯狂的癫子  阅读(147)  评论(0编辑  收藏  举报