完数
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 }