回文素数的优化问题,希望把我这个算法尽可能的优化,输入一个整数n(2,1000000)输出n范围的回文素数
一号代码:#include<iostream>
#include<string>
#include<math.h>
using namespace std;
int o(int n)
{
int i;
if(n<2)
return 0;
else for(i=2;i<=n-1;++i)
if(n%i==0)return 0;
return 1;
}
int test(int num)
{
long n=0;
long count=0;
count=num;
do
{
n*=10;
n+=num%10;
num/=10;
}
while (num>0);
if (count==n)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int n,count=0,i;
cin>>n;
for(i=1;i<=n;++i)
{
if(o(i)==1)
if(test(i)==1)
{
cout<<i<<" ";
count++;
if(count%5==0)
cout<<endl;
}
}
return 0;
}
二号代码:
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int main()
{
int m,n,i,t,x,h,b=0,N,z,count=0;
int a[7];
scanf("%d",&m);
for(i=1;i<=m;i++)
{
for(x=2;x<i;x++)
if(i%x==0)
break;
if(x==i)
{
z=i;
b=0;
while(z)
{
a[b]=z%10;
z=z/10;
b++;
}
for (z=0;z<b;z++)
if(a[z]!=a[b-1-z]) break;
if(z==b)
{
count++;
printf("%d ",i);
if(count%5==0)
cout<<endl;
}
}
}
}