Питон 10 класс
Число 437 записали в системах счисления с основаниями от 2 до 10 включительно. При каких основаниях сумма цифр этого числа является простым числом? В ответе укажите сумму всех подходящих оснований.
ПОЖАЛУЙСТА БЕЗ ДОП ФУНКЦИЙ БИБЛИОТЕК И ТД НА УРОВНЕ ШКОЛЫ
По дате
По рейтингу
12345678910111213
def sum_num(n, b): # сумма цифр числа n в записи по оcнованию b
s = 0
while n:
s += n % b
n //= b
return s
s = 0
for b in range(2, 11):
v = sum_num(437, b)
if v in [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]: # проверка на простое число
s += b
print(s)
Без функций:
123456789
s = 0
for b in range(2, 11):
n, v = 437, 0
while n:
v += n % b
n //= b
if v in [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]:
s += b
print(s)
Код:
123456789101112131415161718192021222324252627282930313233343536373839
# Число для перевода
number = 437
# Список оснований систем счисления
bases = range(2, 11)
# Переменная для суммы всех подходящих оснований
sum_of_bases = 0
# Проходим по всем основаниям и проверяем сумму цифр числа
for base in bases:
n = number
digits = []
# Переводим число в систему счисления с текущим основанием
while n:
digits.append(int(n % base))
n //= base
# Суммируем цифры
digit_sum = 0
for digit in digits:
digit_sum += digit
# Проверяем, является ли сумма цифр простым числом
if digit_sum < 2:
is_prime = False
else:
is_prime = True
for i in range(2, int(digit_sum ** 0.5) + 1):
if digit_sum % i == 0:
is_prime = False
break
# Если сумма цифр простое число, добавляем основание к сумме
if is_prime:
sum_of_bases += base
# Выводим результат
print("Сумма всех подходящих оснований:", sum_of_bases)
12345678910111213141516171819202122232425262728293031323334353637
total_bases = 0 # Общая сумма подходящих оснований
for base in range(2, 11):
n = 437
digits = []
# Преобразование числа 437 в систему счисления с основанием base
while n > 0:
remainder = n % base
digits.append(remainder)
n = n // base
# Переворачиваем список цифр, чтобы получить правильный порядок
digits.reverse()
# Вычисление суммы цифр в новой системе счисления
digit_sum = 0
for digit in digits:
digit_sum += digit
# Проверка, является ли сумма цифр простым числом
is_prime_number = True
if digit_sum < 2:
is_prime_number = False
else:
i = 2
while i < digit_sum:
if digit_sum % i == 0:
is_prime_number = False
break
i += 1
# Если сумма цифр простая, добавляем основание к общей сумме
if is_prime_number:
total_bases += base
print("Сумма подходящих оснований:", total_bases)
Ответ: 33
Больше по теме