hdu1406 完数 (水题)

简介: hdu1406 完数 (水题)

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

 

Author

lcy

 

Source

杭电ACM集训队训练赛(IV)

 

代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
    int n,t;
    scanf("%d",&n);
    while(n--)
    {
        int num1,num2,i,j,sum,k,count=0;
        scanf("%d %d",&num1,&num2);
        if(num1>num2)
        {
        t=num1;
        num1=num2;
        num2=t;            
        }
        for(i=num1;i<=num2;i++)
        {
            sum=0;
            for(j=2;j<=sqrt(i);j++)
            {
                if(i%j==0) sum+=j+i/j;
            }
            if(sum+1==i) count++;
        }
        printf("%d\n",count);
     } 
    return 0;
}
目录
相关文章
|
Java C++
poj 1503 高精度加法
把输入的数加起来,输入0表示结束。 先看我Java代码,用BigINteger类很多东西都不需要考虑,比如前导0什么的,很方便。不过java效率低点,平均用时600ms,C/C++可以0ms过。
40 1
|
12月前
|
Java
hdu 1262 寻找素数对
hdu 1262 寻找素数对
34 0
AcWing 809. 最小公倍数
AcWing 809. 最小公倍数
81 0
AcWing 809. 最小公倍数
HDU-1058,Humble Numbers(丑数打表)
HDU-1058,Humble Numbers(丑数打表)
HDU-1262,寻找素数对(素数打表)
HDU-1262,寻找素数对(素数打表)
|
C++ 人工智能 BI
HDU2032杨辉三角
有点强迫症,主函数必须简洁,但是这里的if判断语句很碍眼,自己也并没有想到什么不画蛇添足的方法使代码更加简洁......
1502 0