Search code examples
pythonpython-3.xprimespalindrome

Palindromic prime number in python


So I'm trying to figure out how to find all the palindrome prime numbers between 2 numbers. So far my code can find the palindrome but when I check for a prime number, it prints out the non-primes as well. And there are numbers which are printed multiple times.

Could you please help.

Thanks.

a = 0
b = 500
a += 1   
for i in range(a,b):
    if(str(i) == str(i)[::-1]):
        if(i>2):
            for a in range(2,i):
                y = True
                if(i%a==0):
                    y = False
                    break
            if y:
                print(i)

Solution

  • Based on your most recent code, you simply need to make sure that you reset y, which serves as your positive indicator of primality, for each number you test. Otherwise, it will stay False when you get to the number 4, the first composite number.

    >>> a = 0
    >>> b = 500
    >>> a += 1
    >>> for i in range(a,b):
            y = True
            if(str(i) == str(i)[::-1]):
                if(i>2):
                    for a in range(2,i):
                        if(i%a==0):
                            y = False
                            break
                    if y:
                        print(i)
    
    
    3
    5
    7
    11
    101
    131
    151
    181
    191
    313
    353
    373
    383
    

    As you can see, all of these are prime. You can check the list of primes wolframalpha provides to be sure that no palindromic primes have been omitted. If you want to include 2, add a special case for that.