7-15 寻找数中连续数字构成的最大素数
分数 20
全屏浏览题目
切换布局
作者 叶斌
单位 成都信息工程大学
输入一个整数,找出其中由N(N>=1)个连续数字组成的最大素数,如果找不到素数,则输出None。
输入格式:
输入1个正整数。
输出格式:
输出最大素数。
输入样例1:
2114567565
输出样例1:
4567
输入样例2:
468
输出样例2:
None
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考答案
#include<stdio.h>
#include<math.h>
int isPrime(int n){
if(n<2)return 0;
for(int i=2;i<=sqrt(n);i++)
if(n%i==0)return 0;
return 1;
}
int main()
{
int n,i,t,term=0,max=0;
scanf("%d",&n);
t=n;
while(t!=0){
t/=10;
term++;
}
for(;term>=0;term--){
t=n%(int)pow(10,term);//从最大位数开始削减,因为pow函数输出是double类型,
for(i=t;i>0;i/=10){ //而%算法不可对double类型计算,所以强制改变类型为int
if(isPrime(i)){
if(i>max)max=i;
}
}
}
if(max==0)printf("None");
else printf("%d",max);
return 0;
}