文章
59
粉丝
0
获赞
18
访问
3.4k
#include<bits/stdc++.h>
using namespace std;
// 素数筛
const int maxn = 1000000 + 5;
int prime[maxn];
void getPrime(){
memset(prime, 0, sizeof(prime));
for(int i = 2; i <= maxn; i ++){
if(prime[i] == 0) prime[++ prime[0]] = i;
for(int j = 1; j <= prime[0] && i * prime[j] <= maxn; j ++){
prime[i * prime[j]] = 1;
if(i % prime[j] == 0) break;
}
}
}
// 从字符串中提取数字
int getNum(char *s){
int res = 0;
for(int i = 0; i < strlen(s); i ++){
if(isdigit(s[i])){ res *= 10; res += (s[i] - '0');}
}
return res;
}
// 求最大素因子
int maxP(int num){
int res = 0;
for(int i = 1; prime[i] <= num; i ++){
int p = prime[i];
if(num % p == 0) res = p;
}
return res;
}
int main(){
getPrime();
int n; cin >> n;
while(n --){
char s[105];
cin >> s;
cout << maxP(getNum(s)) << endl;
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发