完数
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 22289 Accepted Submission(s):
8150
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 <iostream> 2 #include <cstdio> 3 using namespace std; 4 int _is(int x) 5 { 6 int i,j,k,l,sum=1; 7 for(i=2;i<=x/2;i++) 8 { 9 if(x%i==0) 10 { 11 sum+=i; 12 } 13 } 14 if(sum==x) 15 return 1; 16 return 0; 17 } 18 int main() 19 { 20 int x,y,i,j,n; 21 cin>>n; 22 while(n--) 23 { 24 int count=0; 25 scanf("%d%d",&x,&y); 26 if(x>y) 27 { 28 int t; 29 t=x; 30 x=y; 31 y=t; 32 } 33 for(i=x;i<=y;i++) 34 { 35 if(_is(i)) 36 { 37 count++; 38 } 39 } 40 printf("%d\n",count); 41 } 42 43 }
时间: 2024-10-24 14:33:03