题解
2023-08-01 19:42:14
发布于:上海
44阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
const unsigned MAX=1e7+5;
unsigned m=0,cnt=0,ans[MAX],len;
string n;
bool isp(unsigned x){
if (x<=1) return false;
for (int i=2;i*i<=x;i++){
if (x%i == 0) return false;
}
return true;
}
bool ispp(unsigned x){
unsigned s[20],idx=0,k;
while (x){
s[idx++] = x%10;
x /= 10;
}
for (int i=0;i<idx/2;i++){
swap(s[i],s[idx-i-1]);
}
for (int i=1;i<=idx;i++){
for (int j=0;j<idx-i+1;j++){
k=0;
for (int d=0;d<i;d++){
k *= 10;
k += s[j+d];
}
if (!isp(k)) return false;
}
}
return true;
}
int main(){
cin>>n;
if (n.size()>4){
n = "373";
}
len = n.size();
for (int i=0;i<len;i++) m += pow(10,i)*(n[len-i-1]-'0');
for (int i=2;i<=m;i++){
if (ispp(i)) ans[cnt++] = i;
}
cout<<cnt<<endl;
for (int i=0;i<cnt;i++){
cout<<ans[i]<<endl;
}
return 0;
}
全部评论 1
你怎么发了两个题解。
2024-07-31 来自 浙江
0
有帮助,赞一个