一、题目概述
在给定的L位数字串中,找到首个连续K位数字组成的素数。
二、思路
1、用< string>库中的substr(pos, len)截取从下标pos开始的长度为len的子串。
2、用atoi()将子串转换为数字。
3、注意使用long long保存数字并校验,K取9位时有可能超出int32位范围。
三、代码
#include <iostream>
#include <string>
#include <cmath>
#include <cstdlib>
using namespace std;
bool isprime( int x )
{
if( x < 2 )
return false;
for( int i = 2; i <= (int)sqrt((double)x); ++i )
if( x % i == 0 )
return false;
return true;
}
int main()
{
int L, K;
cin >> L >> K;
string str;
cin >> str;
for( int i = 0; i + K <= str.size(); ++i )
if( isprime(atoi(str.substr(i, K).c_str())) )
{
cout << str.substr(i, K);
return 0;
}
cout << "404";
}