#include<bits/stdc++.h>
using namespace std;
const int maxn = 40000;
int a[maxn],b[maxn];
int sss(int t, int n)
{
int sum = 1,tt;
for(int i = 0; i < n; i++)
{
tt = 1;
if(t%b[i] == 0)
while(t % b[i] == 0)
{
t /= b[i];
tt++;
}
sum *= tt;
}
return sum;
}
int main()
{
fill(a, a + maxn, 1);
for(int i = 2;i <= 20000; i++)
{
for(int j = 2*i ; j <= maxn; j += i)
a[j] = 0;
}
int count_n = 0;
for(int i = 2; i<= maxn; i++)
if(a[i])
b[count_n++] = i;
int t ;
cin >> t;
while(t--)
{
int p, q;
cin >> p >> q;
int sum = 0, chucun = 0;;
for(int i = p; i <= q; i++)
{
int w = sss(i, count_n);
if(sum < w)
{
sum = w;
chucun = i;
}
}
printf("Between %d and %d, %d has a maximum of %d divisors.\n",p, q,chucun ,sum);
}
return 0;
}
UVA - 294
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.