Почему Python не работает с системами счисления, основания которых превышают 36?
Вот программа, печатающая элементы последовательности A235395, не превышающие 4000:
# Here's a Python program that checks for prime numbers
# whose decimal representation is also a valid number
# in base 9 and interpreted as such is again a prime,
# and prints such numbers less than 4000:
def is_prime(n):
"""Check if a number is prime."""
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def is_valid_base_9(n):
"""Check if a number is valid in base 9."""
digits = str(n)
for digit in digits:
if int(digit) >= 9:
return False
return True
primes_base_9 = []
for n in range(2, 4000):
if is_prime(n) and is_valid_base_9(n) and is_prime(int(str(n), 9)):
primes_base_9.append(n)
print(primes_base_9)
Допустим, я желаю изменить эту программу таким образом, чтобы она работала не с 9-чной, а с 37-чной системой счисления. Оказывается, я не могу этого сделать:
ValueError: int() base must be >= 2 and <= 36, or 0
Как выйти из данного положения?
P.S. Ктати, а разве бывает позиционная система счисления с основанием 0? Почему её Python разрешает?