我不知道,还有没有更快的方法求解
下面是我总结的
//代码 1
#include <bits/stdc++.h>
using namespace std;
bool isprime(int n)
{
for(int i=2;i<=n/i;i++)
if(n%i==0)
return false;
return true;
}
int check(int a)
{
int i=a,s=0;
while(i)s=s*10+i%10,i/=10;
if(a==s)return 1;
return 0;
}
int main()
{
int a,b;
while( scanf("%d%d",&a,&b)!=EOF)
{
for(int i=a;i<=b&&i<=9989899;i++)
{
if(check(i)&&isprime(i))
printf("%d\n",i);
}
}
return 0;
}
上面的时间复杂度在一个理想的情况内快速实现
//代码 2 判断回文函数2
bool check(int n)
{
if(n/10==0) return true;
string s;
stringstream ss;
ss<<n;
ss>>s;
for(int i=0;i<s.size()/2;i++)
if(s[i]!=s[s.size()-1-i]) return false;
return true;
}
上面的函数实现,时间比代码1慢
对了,判断质数(素数)的方法还有用sqrt,或者i*i<=n等等,这些都慢于上面的函数
其实,还有一种,根据数字的规律,不同情况不同对待,说白了,就是贪心思想。
不过,那个可能不容易想到,一般不推荐。哈哈哈QWQ