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

Answer

#include <iostream>
using namespace std;
int main()
{
 int a[10001]={0},n,k,i,x,y,num;
 a[5]=a[27]=a[495]=a[8127]=1;
 cin>>n;
 for(k=0;k<n;k++)
 {
  num=0;
  cin>>x>>y;
  if(x>y)
  {
   x=x+y;
   y=x-y;
   x=x-y;
  }
  for(i=x-1;i<y;i++)
   if(a[i]==1)
    num++;
  cout<<num<<endl;
 }
 return 0;
}

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭