【完数】|HDU-1406完数

1647 ワード

基礎的な問題ですが、熟練していないので、いつも一通り持って行くことができません.今回はここに書いて自分に教訓を与えます.
タイトル:
完数の定義:1より大きい正の整数のすべての因子の和がそれ自体に等しい場合、この数は完数であり、例えば6、28はすべて完数である:6=1+2+3;28=1+2+4+7+14. 
本題のタスクは,2つの正の整数間の完数の個数を判断することである. Input
入力データは複数の行を含み、最初の行は正の整数nであり、テストインスタンスの個数を表し、次いでnのテストインスタンスであり、各インスタンスは1行を占め、2つの正の整数num 1とnum 2からなる(1 Output
テストデータのセットごとにnum 1とnum 2の間(num 1とnum 2を含む)に存在する完全な数を出力します.Sample Input
2
2 5
5 7
Sample Output
0
1
ダイレクトコード:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include
#include
#include
#include
using namespace std;

bool blow_t(int n)  /// n ;
{
    int i,sum = 0;
    bool wanshu = false; /// flag;
    for(i = 1; i <= n/2; i ++) /// 1 ~ n/2 ;
    {
        if(n % i == 0)
        {
            sum += i;  /// i n , sum;
        }
    }
    if(n == sum)  /// sum==n, ,flag ;
    {
        wanshu = true;
    }
    return wanshu;
}

int main()
{
    int N;
    cin >> N;
    while(N--)
    {
        int i,a,b,sum = 0;
        int t;
        cin >> a >> b;
        if(a > b)
        {
            swap(a,b);
        }
        for(i = a; i <= b; i ++)
        {
            if(blow_t(i))
            {
                sum ++;
            }
        }
        cout << sum << endl;
    }
    return 0;
}

閲覧ありがとうございます.