输入一个由数字字符组成的字符串(长度不超过80),再输入一个整数 n(2≤n≤9)。从输入的字符串中分别找出由连续n个数字字符转换成的最大素数与最小素数,并分别给出最大素数与最小素数对应的n个字符构成的字符串最后出现在原字符串中的起始位置(输入字符串起始位置从0开始)。如果没有满足要求的素数,则输出“NONE”。
输入格式:
先输入一行不超过不超过80的完全由数字字符构成的字符串
再输入一个正整数 n
输出格式:
输出由n个连续的数字字符所能转换出的最大素数与最小素数,并输出它们最后出现在输入字符串中的起始位置
输入样例1:
167616709118911
3
输出样例1:
max_prime=911,last start position=12
min_prime=167,last start position=4
输入样例2:
24680457
2
输出样例2:
NONE
#include<stdio.h>
int is_prime(int n)
{
int flag = 1;
for (int i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
{
flag = 0;
break;
}
}
return flag;
}
int main()
{
int max = 0, min = 100000000;
int max_index = 0, min_index = 0;
char str[100];
int num;
scanf("%s", str);
scanf("%d", &num);
int sum = 0;
int length = strlen(str);
int flag=0;
for (int i = 0; i <= length - num; i++)
{
sum = 0;
int j = 0;
for (j = i; j < i + num; j++)
{
sum = sum * 10 + str[j] - '0';
}
if (is_prime(sum) == 0)
{
continue;
}
if (sum >= max)
{
max = sum;
max_index = i;
}
if (sum <= min)
{
min = sum;
min_index = i;
}
}
if(max == 0 && min == 100000000)
{
printf("NONE");
return 0;
}
printf("max_prime=%d,last start position=%d\n", max, max_index);
printf("min_prime=%d,last start position=%d\n", min, min_index);
}