LeetCode 866. Nombres premiers de palindrome (sauf pour 11, même les palindromes avec des chiffres pairs ne sont pas des nombres premiers)

1. Titre

Trouver le nombre premier de palindrome minimum supérieur ou égal à N.

Rappelez-vous que si un nombre est supérieur à 1 et que ses facteurs ne sont que 1 et lui-même, alors le nombre est premier.

Par exemple, 2, 3, 5, 7, 11 et 13 sont des nombres premiers.

Rappelons que si un nombre est lu de gauche à droite et de droite à gauche, alors le nombre est un palindrome.

Par exemple, 12321 est le nombre de palindromes.

示例 1:
输入:6
输出:7

示例 2:
输入:8
输出:11

示例 3:
输入:13
输出:101
 
提示:
1 <= N <= 10^8
答案肯定存在,且小于 2 * 10^8

Source: LeetCode (LeetCode)
Lien: https://leetcode-cn.com/problems/prime-palindrome Le
droit d'auteur appartient au réseau de déduction. Veuillez contacter l'autorisation officielle pour la réimpression commerciale, et veuillez indiquer la source de la réimpression non commerciale.

2. Résolution de problèmes

À l'exception de 11, les palindromes à chiffres pairs, tels que 456654, ne sont pas des nombres premiers, ils sont tous divisibles par 11.

  • Selon ce pass, laissez tomber de gros nombres pour éviter le timeout
class Solution {
public:
    int primePalindrome(int N) {
        if(N==1)
            return 2;
        if(8<=N && N<=11)
            return 11;
        int bit;
        for(;N;++N)
        {
            if(10000000 < N && N < 100000000)
                N = 100000000;//没有8位数的回文素数
        	if(isPalindrome(N,bit) && (bit%2) && isPrime(N))//奇数位的回文数才可能是质数,除11
        		return N;
        }
        return -1;
    }

    bool isPalindrome(int n, int &bit)
    {
    	int t = 0, N = n;
        bit = 0;
    	while(n)
    	{
    		t = t*10+n%10;
    		n /= 10;
            bit++;
    	}
    	return (t==N);
    }
    bool isPrime(int n)
    {
    	for(int i = 2; i <= sqrt(n); i++)
    		if(n%i==0)
    			return false;
		return true;
    }
};

Insérez la description de l'image ici

Publié 841 articles originaux · J'aime 2137 · Plus de 440 000 visites

Je suppose que tu aimes

Origine blog.csdn.net/qq_21201267/article/details/105495449
conseillé
Classement