HDU 2521 反素数

来源:互联网 发布:整形市场分析数据 编辑:程序博客网 时间:2024/05/01 14:05

反素数

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2396    Accepted Submission(s): 1370


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
32 31 1047 359
 

Sample Output
26240
Hint
2的因子为:1 210的因子为:1 2 5 10
 
思路:就是求分解质因数。
 
AC代码:
#include<iostream>using namespace std;int judge(int n){if(n==1) return 1;int i,k=2;for(i=2;i<n;i++){if(n%i==0)k++;}return k;}int main(){int t,a,b,max,i,c,f;    while(scanf("%d",&t)!=EOF){while(t--){scanf("%d%d",&a,&b);max=judge(a);f=a;for(i=a+1;i<=b;i++){   c=judge(i);if(c>max){max=c;f=i;}}printf("%d\n",f);}}return 0;}