解题思路:
注意事项:
参考代码:
#include<bits/stdc++.h> using namespace std; //判断素数这里需要检查的范围为,2~sqrt(n) bool judgeZhishu(int n){ for(int i=2;i<=sqrt(n);i++){ if(n%i==0) return false; } return true; } int main(){ int n; cin>>n; int max=pow(10,n)-1; int min=2*pow(10,n-1); //因为第一位数最小为2,这样开始会提高效率 for(int i=min;i<=max;i++){ int k=n; //通过while来逐步判断 ,第1位数,第1,2位数,第1,2,3位数。可以提高很大的效率 。 while(k>0) { if(judgeZhishu(i/pow(10,k-1))) k--; else break; } if(k==0) cout<<i<<endl; else { i=i-1+pow(10,k-1);//如果在某一步的数不为素数,那么在这个数的该位上+1 } } }
0.0分
2 人评分