时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:3685
校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。
题目描述
对于给定的字符序列,从左至右将所有的数字字符取出拼接成一个无符号整数(字符序列长度小于100,拼接出的整数小于2^31,),计算并输出该整数的最大素因子(如果是素数,则其最大因子为自身)
输入描述:
有多组数据,输入数据的第一行为一个正整数,表示字符序列的数目,每组数据为一行字符序列。
输出描述:
对每个字符序列,取出所得整数的最大素因子,若字符序列中没有数字或者找出的整数为0,则输出0,每个整数占一行输出。
示例1
输入
复制
3
sdf0ejg3.f?9f
?4afd0s&2d79*(g
abcde
输出
复制
13
857
0
#include<stdio.h>
#include<string.h>
#include<math.h>
int maxPrime(int num) {
int max=0;
for (int i = 2; i <= sqrt(num); i++) {
while (num%i == 0) {
num /= i;
if(i>max) max =i;
}
}
return num>max?num:max;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long sum=0;
char a[101];
scanf("%s",a);
int length=strlen(a);
for (int i=0;i<length;i++)
{
if(a[i]>='0'&&a[i]<='9')
sum=sum*10+(a[i]-'0');
}
printf("%lld\n",maxPrime(sum));
}
}