题目描述

对于给定的字符序列,从左至右将所有的数字字符取出拼接成一个无符号整数(字符序列长度小于100,拼接出的整数小于2^31,),计算并输出该整数的最大素因子(如果是素数,则其最大因子为自身)

输入描述:

有多组数据,输入数据的第一行为一个正整数,表示字符序列的数目,每组数据为一行字符序列。

输出描述:

对每个字符序列,取出所得整数的最大素因子,若字符序列中没有数字或者找出的整数为0,则输出0,每个整数占一行输出。

输入

3
sdf0ejg3.f?9f
?4afd0s&2d79*(g
abcde

输出

13
857
0

#include<bits/stdc++.h>
using namespace std;
int maxFactor(int x){
	int ans=0;
	for(int i=2; i*i <= x; i++){
		while(x % i == 0){  //因子筛选 
			ans = i;
			x /= i;
		}
	}
	if(x > 1) ans = x;
	return ans;
}
int main(){
	int m,n; 
	while(cin>>m){
		string str;
		getchar();
		while(m--){
			getline(cin,str);
			int sum = 0;
			for(int i=0;i<str.size();i++){
				if(isdigit(str[i])){
					sum = sum * 10 + str[i] - '0';
				}
			}
			cout<<maxFactor(sum)<<endl;	 
		}
	}
	return 0;
}