测试点1:得到的k位连续的数可能为0000,即0,不为素数
测试点2:例如在 200236 中找 4 位素数,0023 算是解,输出的应该是0023,而不是输出23
测试点4:需要用l - k 控制循环次数,或者(int)str.length() - k 原因可以参考c++ string类length()(size())函数返回值--无符号数
正确代码
#include<iostream>
using namespace std;
bool is_prime(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() {
string str, temp;
int l, k, num;
cin >> l >> k >> str;
for(int i = 0; i <= l - k; i++) {
temp = str.substr(i, k);
num = stoi(temp);
if(is_prime(num)) {
cout << temp;
return 0;
}
}
cout << 404;
return 0;
}