找出最小的回文数,它也是素数,大于给定的数N。 例如:
null
Input : N = 7Output :1111 is the smallest palindrome prime whichis greater than N.Input : N = 112Output : 131
A. 简单方法 就是从N+1开始循环。对于每个数字,请检查是否正确 回文的 和 首要的 . 一 有效解决方案 基于以下观察结果。所有偶数的回文都是11的倍数。 我们可以证明如下: 11 % 11 = 0 1111 % 11 = 0 111111 % 11 = 0 11111111 % 11 = 0 所以: 1001 % 11 = (1111 – 11 * 10) % 11 = 0 100001 % 11 = (111111 – 1111 * 10) % 11 = 0 10000001 % 11 = (11111111 – 111111 * 10) % 11 = 0 对于任何偶数回文: abcddcba%11 =(a*10000001+b*100001*10+c*1001*100+d*11*1000)%11 = 0 所有偶数的回文都是11的倍数。 所以在它们当中,11是唯一的一个素数 如果(8<=N<=11)返回11 另一方面,我们只考虑有奇数的回文。
C++
// CPP program to find next palindromic // prime for a given number. #include <iostream> #include <string> using namespace std; bool isPrime( int num) { if (num < 2 || num % 2 == 0) return num == 2; for ( int i = 3; i * i <= num; i += 2) if (num % i == 0) return false ; return true ; } int primePalindrome( int N) { // if(8<=N<=11) return 11 if (8 <= N && N <= 11) return 11; // generate odd length palindrome number // which will cover given constraint. for ( int x = 1; x < 100000; ++x) { string s = to_string(x), r(s.rbegin(), s.rend()); int y = stoi(s + r.substr(1)); // if y>=N and it is a prime number // then return it. if (y >= N && isPrime(y)) return y; } return -1; } // Driver code int main() { cout << primePalindrome(112); return 0; } |
JAVA
// Java program to find next palindromic // prime for a given number. import java.lang.*; class Geeks { static boolean isPrime( int num) { if (num < 2 || num % 2 == 0 ) return num == 2 ; for ( int i = 3 ; i * i <= num; i += 2 ) if (num % i == 0 ) return false ; return true ; } static int primePalindrome( int N) { // if(8<=N<=11) return 11 if ( 8 <= N && N <= 11 ) return 11 ; // generate odd length palindrome number // which will cover given constraint. for ( int x = 1 ; x < 100000 ; ++x) { String s = Integer.toString(x); StringBuffer buffer = new StringBuffer(s); buffer.reverse(); int y = Integer.parseInt(s + buffer.substring( 1 ).toString()); // if y>=N and it is a prime number // then return it. if (y >= N && isPrime(y) == true ) return y; } return - 1 ; } // Driver code public static void main(String args[]) { System.out.print(primePalindrome( 112 )); } } |
Python3
# Python3 program to find next palindromic # prime for a given number. import math as mt def isPrime(num): if (num < 2 or num % 2 = = 0 ): return num = = 2 for i in range ( 3 , mt.ceil(mt.sqrt(num + 1 ))): if (num % i = = 0 ): return False return True def primePalindrome(N): # if(8<=N<=11) return 11 if ( 8 < = N and N < = 11 ): return 11 # generate odd length palindrome number # which will cover given constraint. for x in range ( 1 , 100000 ): s = str (x) d = s[:: - 1 ] y = int (s + d[ 1 :]) # if y>=N and it is a prime number # then return it. if (y > = N and isPrime(y)): return y # Driver code print (primePalindrome( 112 )) # This code is contributed by # Mohit kumar 29 |
C#
// C# program to find next palindromic // prime for a given number. using System; using System.Text; using System.Collections; class Geeks { static bool isPrime( int num) { if (num < 2 || num % 2 == 0) return num == 2; for ( int i = 3; i * i <= num; i += 2) if (num % i == 0) return false ; return true ; } static int primePalindrome( int N) { // if(8<=N<=11) return 11 if (8 <= N && N <= 11) return 11; // generate odd length palindrome number // which will cover given constraint. for ( int x = 1; x < 100000; ++x) { string s = x.ToString(); char [] buffer = s.ToCharArray(); Array.Reverse(buffer); int y = Int32.Parse(s + new string (buffer).Substring(1)); // if y>=N and it is a prime number // then return it. if (y >= N && isPrime(y) == true ) return y; } return -1; } // Driver code public static void Main() { Console.WriteLine(primePalindrome(112)); } } // This code is contributed by Mithun Kumar. |
PHP
<?php // PHP program to find next palindromic // prime for a given number. function isPrime( $num ) { if ( $num < 2 || $num % 2 == 0) return $num == 2; for ( $i = 3; $i * $i <= $num ; $i += 2) if ( $num % $i == 0) return false; return true; } function primePalindrome( $N ) { // if(8<=N<=11) return 11 if (8 <= $N && $N <= 11) return 11; // generate odd length palindrome number // which will cover given constraint. for ( $x = 1; $x < 100000; ++ $x ) { $s = strval ( $x ); $r = strrev ( $s ); $y = intval ( $s . substr ( $r , 1)); // if y>=N and it is a prime number // then return it. if ( $y >= $N && isPrime( $y ) == true) return $y ; } return -1; } // Driver code print (primePalindrome(112)); // This code is contributed by mits ?> |
Javascript
<script> // Javascript program to find next palindromic // prime for a given number. function isPrime(num) { if (num < 2 || num % 2 == 0) return num == 2; for (i = 3; i * i <= num; i += 2) if (num % i == 0) return false ; return true ; } function primePalindrome(N) { // if(8<=N<=11) return 11 if (8 <= N && N <= 11) return 11; // generate odd length palindrome number // which will cover given constraint. for (let x = 1; x < 100000; ++x) { let s = String(x); let r = s.split( "" ).reverse().join( "" ); let y = parseInt(s + r.substr(1)); // if y>=N and it is a prime number // then return it. if (y >= N && isPrime(y) == true ) return y; } return -1; } // Driver code document.write(primePalindrome(112)); // This code is contributed by gfgking </script> |
输出:
131
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END