//从左往右数第一个数肯定为2,3,5,7中的某一位,用递归的方法,从左往右开始
#include<fstream>
#include<cmath>
using namespace std;
ifstream fin ("sprime.in");
ofstream fout ("sprime.out");
int isp(int x)
{
int i;
for(i=2;i<=sqrt(x);i++)
{
if(x%i==0)
return 0;
}
return 1;
}
int dfs(int n,int ans)
{
int i,temp;
if(n==0)
{
fout<<ans<<endl;
return 0;
}
for(i=1;i<=9;i++)
{
temp=10*ans+i;
if(isp(temp))
dfs(n-1,temp);
}
}
int main()
{
int n;
fin>>n;
dfs(n-1,2);
dfs(n-1,3);
dfs(n-1,5);
dfs(n-1,7);
}
第一次超时算法,结果是对的
#include<fstream>
#include<cmath>
using namespace std;
int main()
{
int i,j,n,k,l=0;
bool f1=false,f2=false;
ifstream fin ("sprime.in");
ofstream fout ("sprime.out");
fin>>n;
for(i=pow(10,n-1)+1;i<pow(10,n);i=i+2)
{
j=i;
while(j!=0)
{
if(j==2 || j==3 || j==5 || j==7 || j==11)
{
j=j/10;
l++;
continue;
}
if(j==1 || j%2==0 || j%3==0 || j%5==0 || j%7==0 || j%11==0)
break;
for(k=2;k<=sqrt(j);k++)
{
if(j%k==0)
{
f1=true;
break;
}
}
if(f1)
{
break;
}
j=j/10;
l++;
}
if(l==n)
fout<<i<<endl;
l=0;
f1=false;
f2=false;
}
return 0;
}
Superprime Rib
最新推荐文章于 2022-08-11 19:26:16 发布