code for fun

mail@pastecode.io avatar
unknown
python
2 years ago
779 B
18
Indexable
Never
import math
n = int(input())

def is_prime(n):
    if n < 2: return False
    for i in range(2, int(math.sqrt(n)) + 1):
            if n % i == 0: return False
    return True

a = []
# thêm các số siêu ngto có 1 chữ số vào a (2, 3, 5, 7)
for i in range(2, 10):
    if is_prime(i):
        a.append(i)

# a[0] là 2, ta bắt đầu xét các số từ 20 trở lên, vì các số từ 10 đến 19 
# nếu bỏ chữ số cuối sẽ thành 1 thì k là số siêu ngto được.
# bên cạnh đó các số ngto 2 chữ số trở lên chỉ có thể tận cùng là [1, 3, 7, 9]
while len(a) != 0:
    for i in [1, 3, 7, 9]:
        k = a[0] * 10 + i
        if k <= n and is_prime(k):
            a.append(k)
    print(a.pop(0), end=" ")