首页 > 其他 > 详细

回文质数

时间:2020-02-11 19:32:12      阅读:62      评论:0      收藏:0      [点我收藏+]

(洛谷P1217  https://www.luogu.com.cn/problem/P1217  )

题目描述

因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。
写一个程序来找出范围 [a,b] (5 \le a < b \le 100,000,000)[a,b](5≤a<b≤100,000,000)( 一亿)间的所有回文质数。

输入格式

第 1 行: 二个整数 a 和 b .

输出格式

输出一个回文质数的列表,一行一个。

 

首先想到用python判断回文数会很简单:

 1 def pal(a):             #判断回文数
 2     a1=list(str(a))
 3     b1=list(a1[::-1])
 4 
 5     if a1==b1:
 6         return True
 7     else:
 8         return False
 9     ‘‘‘10     i=0               #或者首尾挨个比较,只需要比较一半的长度   
11     while i<=len(a1)//2:
12         if a1[i]!=b1[i]:
13             return False
14         i+=1
15     return True
16     ‘‘‘‘
17 def zhishu(a):       #判断质数
18     for i in range(2,a):
19         if a==2:
20             return True
21         elif a%i==0:
22             return False
23     return True
24 def main():
25     a,b=map(int,input().split())
26     for i in range(a,b+1):
27         if pal(i) and zhishu(i):
28             print(i)
29 main()
30 #python太慢了...

但显示大多数都超时了...然后用C++写了一次,同样会有超时的输出(好像并不全是python的锅)。但根据输出结果知道,输入最大范围在9989899之后不再有符合的输出,就把9989899之后的忽略,可以节省不少时间。

 1 #include<iostream>
 2 #include<cmath>
 3 using namespace std;
 4 
 5 int h(int n);
 6 int z(int n);
 7 
 8 int main() {
 9     int a, b;
10     cin >> a >> b;
11     if (b > 9989899) b = 9989899;  //如果b大于,可以忽略之后的数
12     if (a % 2 == 0) a += 1;
13     for (int i = a ; i <= b;i+=2 )
14         if (h(i) && z(i)) {
15             cout << i << endl;
16         }
17 }
18 
19 int h(int n) {                   //判断回文数
20     int i = 0, m = n;
21     while (m) {
22         i = m % 10  + 10 * i;
23         m /= 10;
24     }
25     if (i == n)
26         return 1;
27     else 
28         return 0;
29 }
30 
31 int z(int n) {                //判断质数
32     for (int i = 2; i <=sqrt(n); ++i) {
33         if (n % i == 0)
34             return 0;
35     }
36     return 1;
37 }   

回文质数

原文:https://www.cnblogs.com/somejie/p/12293698.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!