修练者
我是80分,,怎样会不超时呀?求指点
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,s;
bool h=true;
cin>>n;
for(int i=pow(10,n-1)*2; i<=pow(10,n); i++) {
s=i;
while(s!=0) {
for(int j=2; j<=sqrt(s); j++) {
if(s%j==0) {
h=false;
break;
}
}
if(h==false) break;
s=s/10;
h=true;
}
if(h==true) {
cout<<i<<endl;
}
h=true;
}
return 0;
}
高级光能
1.你这是三重循环,不超时才怪。你可以取s的每一位,再判断,就是两重循环
2.它一定是奇数,可以i+=2
3.你可以先判断s%2,然后j=3,也可以j+=2
4.如果i比较大(如1000,10000),到4000,40000...,6000,60000等等的时候直接跳过
5.循环先判断i各个位上是不是质数(2,3,5,7,9),如果不是就跳过