Skip to Main Content
Blog

Print all Emirp Numbers in Python

Print all Emirp Numbers in Python

Enter lower bound: 1
Enter upper bound: 99
2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, 97,
import math


def is_emirp(num: int):
    """Checks if a number is an Emirp number or not."""
    return is_prime(num) and is_prime(reverse_number(num))


def is_prime(num: int):
    """Checks if a number is a Prime number or not."""
    if num <= 1:
        return False
    if num <= 3:
        return True
    if num % 2 == 0 or num % 3 == 0:
        return False

    valid = True
    for d in range(5, int(math.sqrt(num)) + 1, 2):
        if num % d == 0:
            valid = False
            break

    return valid


def reverse_number(num: int):
    """Reverses a number in a given radix."""
    radix = 10
    rev = 0
    while num != 0:
        unit = num % radix
        rev = rev * radix + unit
        num //= radix
    return rev


def main():
    l = int(input("Enter lower limit: "))
    u = int(input("Enter upper limit: "))
    for i in range(l, u + 1):
        if is_emirp(i):
            print(i, end=", ")
    print()


if __name__ == "__main__":
    main()