hdu 2521 反素数

Problem Description
反素数就是满足对于任意i(0<i<x),都有g(i)<g(x),(g(x)是x的因子个数),则x为一个反素数。现在给你一个整数区间[a,b],请你求出该区间的x使g(x)最大。
 
Input
第一行输入n,接下来n行测试数据 输入包括a,b, 1<=a<=b<=5000,表示闭区间[a,b].
 
Output
输出为一个整数,为该区间因子最多的数.如果满足条件有多个,则输出其中最小的数.
 
Sample Input
3 2 3 1 10 47 359
 
Sample Output
2 6 240
Hint
2的因子为:1 2
10的因子为:1 2 5 10
#include <iostream>

using namespace std;

int main()
{
    int n,a,b,i,j,sum,sum_max,ans;
    cin>>n;
    while(n--)
    {
        sum_max=-9999;//初始化
        cin>>a>>b;
        for(i=a;i<=b;i++)//区间
        {
            sum=0;//初始化
            for(j=2;j<=i/2;j++)//找到因子并记录个数
            {
                if(i%j==0)
                sum++;
            }
            if(i!=1) //如果不是1还要加其本身 
            sum++;
            if(sum>sum_max)//找到个数最多的数
            {
                sum_max=sum;
                ans=i;
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}

 

posted @ 2016-02-20 16:43  邻家那小孩儿  阅读(265)  评论(0编辑  收藏  举报