回文质数(洛谷-P1217)
生活随笔
收集整理的這篇文章主要介紹了
回文质数(洛谷-P1217)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目描述
因?yàn)?51既是一個(gè)質(zhì)數(shù)又是一個(gè)回文數(shù)(從左到右和從右到左是看一樣的),所以 151 是回文質(zhì)數(shù)。
寫一個(gè)程序來找出范圍[a,b](5 <= a < b <= 100,000,000)( 一億)間的所有回文質(zhì)數(shù);
輸入輸出格式
輸入格式:
?1 行: 二個(gè)整數(shù) a 和 b .
輸出格式:
輸出一個(gè)回文質(zhì)數(shù)的列表,一行一個(gè)。
輸入輸出樣例
輸入樣例#1:?
5 500
輸出樣例#1:?
5
7
11
101
131
151
181
191
313
353
373
383
思路:要求 1 億以內(nèi)的回文質(zhì)數(shù),7 位就足以將回文數(shù)構(gòu)造出來,然后再判斷素?cái)?shù)即可
源代碼?
#include<iostream> #include<cmath> using namespace std;int judge_prime(int n)//判斷是否是素?cái)?shù) {int i;if(n%2==0) return 0;for(i=3;i<sqrt(n)+1;i+=2)if(n%i==0)return 0; return 1; }int lengh(int n)//判斷區(qū)間長度 {int len=1;while(n>9){n/=10;len++;}return len; } int main() {int a,b;int len_a,len_b;int m,n,p,q;int number;int judge_prime(int n);int lengh(int n);cin>>a>>b;len_a=lengh(a);len_b=lengh(b);if(len_a<=1&&len_b>=1)//位數(shù)為1位時(shí){if(a<=5&&b>=5)cout<<5<<endl;if(a<=7&&b>=7)cout<<7<<endl;}if(len_a<=2&&len_b>=2)//位數(shù)為2位時(shí){if(a<=11&&b>=11)cout<<11<<endl;}if(len_a<=3&&len_b>=3)//位數(shù)為3位時(shí){for(m=1;m<=9;m+=2){for(n=0;n<=9;n++){number=m*100+n*10+m;if(number<a) continue;if(number>b) break; if(judge_prime(number)) cout<<number<<endl;}}}if(len_a<=5&&len_b>=5)//位數(shù)為5位時(shí){for(m=1;m<=9;m+=2){for(n=0;n<=9;n++){for(p=0;p<=9;p++){number=m*10000+n*1000+p*100+n*10+m;if(number<a)continue;if(number>b)break; if(judge_prime(number))cout<<number<<endl;}}}}if(len_a<=7&&len_b>=7)//位數(shù)為7位時(shí){for(m=1;m<=9;m+=2){for(n=0;n<=9;n++){for(p=0;p<=9;p++){for(q=0;q<=9;q++){number=m*1000000+n*100000+p*10000+q*1000+p*100+n*10+m;if(number<a)continue;if(number>b)break;if(judge_prime(number))cout<<number<<endl;}}}}}return 0; }?
總結(jié)
以上是生活随笔為你收集整理的回文质数(洛谷-P1217)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 输出亲朋字符串(信息学奥赛一本通-T11
- 下一篇: 素数对(信息学奥赛一本通-T1403)