PTA7-5最小回文素数

一、题目描述

  

 

 二、解题思路

  简单暴力解即可以,当然可以在if条件出进行优化,if这个数能被2整除一定不是素数,然后再是判断是否是回文,再判断是否是素数,这样能最大减小常数。

三、代码实现

 1 #include "bits/stdc++.h"
 2 #define PII pair<int,int>
 3 #define rep(i,z,n) for(int i = z;i <= n; i++)
 4 #define per(i,n,z) for(int i = n;i >= z; i--)
 5 #define ll long long
 6 #define db double
 7 #define vi vector<int>
 8 #define debug(x) cerr << "!!!" << x << endl;
 9 using namespace std;
10 inline ll read()
11 {
12     ll s,r;
13     r = 1;
14     s = 0;
15     char ch = getchar();
16     while(ch < '0' || ch > '9'){
17         if(ch == '-')
18             r = -1;
19         ch = getchar();
20     }
21     while(ch >= '0' && ch <= '9'){
22         s = (s << 1) + (s << 3) + (ch ^ 48);
23         ch = getchar();
24     }
25     return s * r;
26 }
27 inline void write(ll x)
28 {
29     if(x < 0) putchar('-'),x = -x;
30     if(x > 9) write(x / 10);
31     putchar(x % 10 + '0');
32 }
33 int a[110];
34 bool jdg(int k)
35 {
36     int cnt = 0;
37     int m = k;
38     while(m){
39         a[cnt++] = m % 10;
40         m /= 10;
41     }
42     for(int i = 0;i < cnt / 2;i++){
43         if(a[i] != a[cnt - 1 - i])
44             return false;
45     }
46     return true;
47 }
48 bool prime(int k)
49 {
50     if(k == 1)
51         return false;
52     for(int i = 2;i <= sqrt(k);i++)
53         if(k % i == 0)
54             return false;
55     return true;
56 }
57 int main()
58 {
59     int n;
60     n = read();
61     while(n--){
62         int t;
63         cin >> t;
64         bool ok = false;
65         while(1){
66             t++;
67             if(jdg(t) && prime(t)){
68                 ok = true;
69                 break;
70             }
71         }
72         if(ok)
73             cout << t << endl;
74     }
75     return 0;
76 }

 

posted @ 2022-03-10 21:17  scannerkk  阅读(445)  评论(0)    收藏  举报