Top.Mail.Ru
Ответы

Питон 10 класс

Число 437 записали в системах счисления с основаниями от 2 до 10 включительно. При каких основаниях сумма цифр этого числа является простым числом? В ответе укажите сумму всех подходящих оснований.

ПОЖАЛУЙСТА БЕЗ ДОП ФУНКЦИЙ БИБЛИОТЕК И ТД НА УРОВНЕ ШКОЛЫ

По дате
По рейтингу
Аватар пользователя
Новичок
8мес
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) 
Аватар пользователя
Мудрец
8мес

Код:

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) 
 
Аватар пользователя
8мес
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