首页 > 代码库 > (HDU)1046 -- 完数

(HDU)1046 -- 完数

题目链接:https://vjudge.net/problem/HDU-1406

注意是所有的因子之和,重复出现的因子不要累加(如果模拟了除法的话),另外给出的两个整数要比较大小(坑)。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cmath>
 4 #include <iostream>
 5 #include <algorithm>
 6 #include <string>
 7 #include <cstdlib>
 8 
 9 using namespace std;
10 
11 int f(int n)
12 {
13     int sum=0,i;
14     for(i=1;i<=n/2;i++)
15         if(n%i==0)
16             sum+=i;
17     if(sum==n) return 1;
18     else return 0;
19 }
20 
21 int main()
22 {
23     int t,a,b,i,cnt;
24     scanf("%d",&t);
25     while(t--)
26     {
27         cnt=0;
28         scanf("%d %d",&a,&b);
29         if(a>b) {i=a;a=b;b=i;}
30         for(i=a;i<=b;i++)
31             if(f(i)) cnt++;
32         printf("%d\n",cnt);
33     }
34     return 0;
35 }

 

(HDU)1046 -- 完数