ACM_回文素数
Posted 霜雪千年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACM_回文素数相关的知识,希望对你有一定的参考价值。
Problem Description:
131号是一个主回文,因为它是一个素数和一个回文(当向后读时,它是相同的数字)。编写一个程序, 计算两个提供的数字a和b (5 <= a <b <= 10 ^ 8)范围内的主回文数; a和b都被认为在范围内。 例如,范围5-120包含3个主要回文(5,7,11,101)。
Input:
输入包含多个案例。每个案例包含两个整数a和b。
Output:
对于每种情况,输出问题的答案。
Sample Input:
5 11 5 120
Sample Output:
3 4
解题思路:这道题跟杭电hdu1431一样,链接-->hdu 1431 素数回文,只不过这里要求输出区间回文素数的个数。
AC代码:
1 #include<bits/stdc++.h> 2 #define maxn 9999999 3 using namespace std; 4 bool isp[maxn];int a,b,num; 5 bool is_palindrome(int n){//判断回文函数 6 int sum=0,tmp=n; 7 while(tmp){sum=sum*10+tmp%10;tmp/=10;} 8 if(sum==n)return true; 9 else return false; 10 } 11 int main(){ 12 memset(isp,true,sizeof(isp)); 13 isp[0]=isp[1]=false; 14 for(int i=4;i<maxn;i+=2)isp[i]=false; 15 for(int i=3;i*i<maxn;i+=2){//埃氏筛法 16 if(isp[i]){ 17 for(int j=i*i;j<maxn;j+=2*i)isp[j]=false; 18 } 19 } 20 while(cin>>a>>b){ 21 num=0; 22 for(int i=a;i<=b;i++){ 23 if(i>=maxn)break; 24 if(isp[i]&&is_palindrome(i))num++; 25 } 26 cout<<num<<endl; 27 } 28 return 0; 29 }
以上是关于ACM_回文素数的主要内容,如果未能解决你的问题,请参考以下文章
ZZNUOJ_用C语言编写程序实现1607:回文素数(附完整源码)