2014年9月8日 星期一

5110 Square free number

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<vector>
#include<utility>
#include<map>
#include<set>
#include<queue>
#include<cmath>
using namespace std;
typedef long long int int64;
bool seive[1000002];
vector<int> drc[1000002];
int main()
{
memset(seive, false, sizeof(seive));
for(int lx = 2;lx < 1000000;lx++){
if(seive[lx] == false){
for(int ly = 2;ly*lx <= 1000000;ly++)
seive[lx*ly] = true;
for(int ly = 1;ly*lx <= 1000000;ly++)
drc[ly*lx].push_back(lx);
}
}
int t;scanf("%d", &t);
while(t-->0){
int a;scanf("%d", &a);
int max_alpha = 0;
for(int lx = 0;lx < drc[a].size();lx++){
int alpha = 0;
int p = drc[a][lx];
int prc_a = a;
while(prc_a%p == 0){
prc_a /= p;
alpha++;
}
max_alpha = max(max_alpha, alpha);
}
printf("%d\n", max_alpha);
}
return 0;
}

沒有留言:

張貼留言