反素数 ,这个问题编程的算法

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

2个回答

伪代码,应该可以看懂

y=int[5001]
//第一步,计算5000以内所有数的因子个数,50的因子个数是y[50]
for(int i=1;i<=5000;i++)
口for(int j=1;j<=i;j++)
口口if(i%j==0)y[i]+=1;

//第二步查找区间[a,b]最大值,下面提高效率最低的查找o(n)
n=read(n);
for(i=0; i<n ; i++ ) {

口a=read(a);
口b=read(b);
口maxindex=b;
口for(int j=b-1;j>=a;j--){
口口if(y[maxindex]<y[j])maxindex=j;
口print(maxindex);

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!