目录
一、题目内容
对于给定的字符序列,从左至右将所有的数字字符取出拼接成一个无符号整数(字符序列长度小于100,拼接出的整数小于2^31,),计算并输出该整数的最大素因子(如果是素数,则其最大因子为自身
二、输入描述
有多组数据,输入数据的第一行为一个正整数,表示字符序列的数目,每组数据为一行字符序列。
三、输出描述
对每个字符序列,取出所得整数的最大素因子,若字符序列中没有数字或者找出的整数为0,则输出0,每个整数占一行输出。
四、输入输出示例
输入:
3 sdf0ejg3.f?9f ?4afd0s&2d79*(g abcde输出:
13 857 0
五、完整C语言代码
AC代码~
#include<stdio.h>
#include<math.h>
int IsPrime(long long int n) {
if (n <= 1)
return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0)
return 0;
}
return 1;
}
int main() {
int m;
char s[101];
int a[100];
scanf("%d", &m);
char c = getchar();
for (int count = 0; count < m; count++) {
gets(s);
int i = 0;
int j = 0; // 数字数组下标
long long int sum = 0;
while (s[i] != '\0') {
if ('0' <= s[i] && s[i] <= '9') {
a[j] = s[i] - '0';
j++;
}
i++;
}
for (int k = 0; k < j; k++)
sum = sum * 10 + a[k];
if (sum == 0)
printf("0\n");
else {
int max = 2;
for (int k = 1; k <= sqrt(sum); k++) {
if (sum % k == 0 ) {
if (IsPrime(sum / k)) {
max = sum / k;
break;
}
if (IsPrime(k))
max = k;
}
}
printf("%d\n", max);
}
}
return 0;
}
文章讲述了如何使用C语言处理给定的字符序列,提取其中的数字形成整数,并计算该整数的最大素因子。如果序列中没有数字或整数为0,则输出0。
1566

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



