答案就是分解质因数求质数指数最大的。1A, 呵呵。
#include <cstdio>
#define maxn 1000100
int T,n;
int prime[maxn];
void getprime(){
prime[0] = 0;
for(int i = 2; i < maxn ; i ++){
if(!prime[i]) prime[++prime[0]] = i;
for(int j = 1; j <= prime[0] && prime[j] <= maxn / i; j ++){
prime[prime[j] * i] = 1;
if(i % prime[j] == 0) break;
}
}
}
int get(int n){
int mmax = 0;
for(int i = 1; i <= prime[0] && n >= prime[i]; i ++){
if(n % prime[i] == 0){
int k = 0;
while(n % prime[i] == 0){
n /= prime[i];
k ++;
}
mmax = mmax > k ? mmax : k;
}
}
return mmax;
}
int main(){
getprime();
scanf("%d",&T);
while(T --){
scanf("%d",&n);
printf("%d\n", get(n));
}
return 0;
}
本文介绍了一种用于求解整数最大质因数指数的算法,并提供了完整的C++实现代码。该算法首先通过筛法获取所有质数,然后对输入整数进行质因数分解,找出最高次幂的质因数。
474

被折叠的 条评论
为什么被折叠?



