欧拉函数可以更加简便,参考不知道原理,可以跑通
int factor(int n){ //求每个数的因子数
int ans=2,i;
if(n==1)
return 1;
int tmp=n;
for(i=2;i<tmp;i++)
if(n%i==0){
ans=n/i==i?++ans:(ans+2);
tmp=n/i;
}
return ans;
}
#include<bits/stdc++.h>
using namespace std;
int eular(int n){//枚举
if(n==1) return 1;
int count = 2;
for(int i=2;i<=n/2;i++){
if(n%i==0)
count ++ ;
}
return count ;
}
int main(){
int num[5000+1];
for(int i=1;i<=5000;i++){
num[i] = eular(i);
}
int n;
cin >> n;
while(n--){
int start,end,max=0,k;
cin >> start >> end;
for(int i=start ;i<=end;i++){
if(max<num[i]){
max = num[i];
k=i;
}
}
cout << k <<endl;
}
return 0;
}