肋骨要断了
2026-07-30 12:58:46
发布于:江苏
7阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
bool prime(int n){
if(n<2) return 0;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0){
return 0;
}
}
return 1;
}//判断质数函数
vector <vector <int>> v(15);//PS:别忘记把项数最大值加5~10
int main(){
int n;
cin>>n;
v[1].push_back(2);
v[1].push_back(3);
v[1].push_back(5);
v[1].push_back(7);//定义长度为1时的数组,ps:别怕下面的三个for(doge)
for(int i=2;i<=n;i++){ //递推
for(int j=0;j<v[i-1].size();j++){//遍历上一次的每一项
for(int k=1;k<10;k+=2){//尝试加1,3,7,9
int temp=v[i-1][j]*10+k;
if(k!=5&&prime(temp)){
v[i].push_back(temp);
}//如果加后是质数,则加入当前数组,顺便去掉加5(即上面的奇数除5以外)
}
}
}
for(int i=0;i<v[n].size();i++){
cout<<v[n][i]<<endl;
}//输出
}
这里空空如也




有帮助,赞一个