UVA - 294

#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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章