问题描述
在长度为N的数字中找出最早出现的长度为K的素数,将其输出。
题目分析
判断素数的函数不用说了。这道题主要用的是字符串的技巧。我们可以直接对输入的字符串进行遍历,每次截取k个字符并转化成数字(这两个字符串的技巧很常用,一个是substr,一个是stoi) .如果是素数就输出,到最后都没有素数,就输出404。
代码
#include <string>
#include <iostream>
using namespace std;
bool isPrime(int n){//判断是否是素数
if(n==0||n==1)
return false;
for(int i=2;i*i<=n;i++)
if(n%i==0)
return false;
return true;
}
int main(){
int l,k;
string s;
cin>>l>>k>>s;
for(int i=0;i<=l-k;i++){
//从i开始截取k个字符
string t=s.substr(i,k);
int num=stoi(t);
if(isPrime(num)){
cout<<t;
return 0;
}
}
cout<<"404\n";
return 0;
}
答题用时8min
Q94——finish√