完数

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 
 3 int if_perfect_number(int number);
 4 
 5 int main(){
 6     int T;
 7     int number1;
 8     int number2;
 9     int temp;
10     int i;
11     int amount;
12 
13     scanf("%d",&T);
14 
15     while(T--){
16         amount=0;
17         scanf("%d%d",&number1,&number2);
18 
19         if(number1>number2){
20             temp=number1;
21             number1=number2;
22             number2=temp;
23         }
24 
25         for(i=number1;i<=number2;i++){
26             if(if_perfect_number(i)==1)
27                 amount++;
28         }
29 
30         printf("%d\n",amount);
31     }
32     return 0;
33 }
34 
35 int if_perfect_number(int number){
36     int i;
37     int sum;
38 
39     sum=0;
40 
41     for(i=1;i<=number/2;i++){
42         if(number%i==0)
43             sum+=i;
44     }
45 
46     if(sum==number)
47         return 1;
48 
49     else
50         return 0;
51 }

 

posted @ 2014-11-09 12:29  zqxLonely  阅读(1509)  评论(0编辑  收藏  举报