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 }
本文来自博客园,作者:{scanner},转载请注明原文链接:{https://home.cnblogs.com/u/scannerkk/}

浙公网安备 33010602011771号