反素数就是满足对于任意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
代码:
/*
求一个区间[a,b]中因子数最多的数,若最多的数不止一个,输出最小的那个数
1.可以暴力查找(a,b数不大)
2.可以用求因子数的算法来求
ans=(1+a1)*(1+a2)*...*(1+an)
a1指改数质因数分解后2个数,以此类推
*/
#include<stdio.h>
int prime[1000];
int book[5005];
int k;
void sss()
{
int i,j;
for(i=2;i<=5000;i++)
{
if(book[i]==0)
{
book[i]=1;
prime[k++]=i;
for(j=i+i;j<=5000;j+=i)
book[j]=1;
}
}
}
void two(int a,int b)
{
int maxx=0,ans,i,x,null,A;
for(;a<=b;a++)
{
A=a,an