Позиционные системы счисления
Скачать 0.83 Mb.
|
Еще пример задания:Р-10. Укажите через запятую в порядке возрастания все основания систем счисления, в которых запись числа 23 оканчивается на 2. Общий подход: здесь обратная задача – неизвестно основание системы счисления, мы обозначим его через поскольку последняя цифра числа – 2, основание должно быть больше 2, то есть вспомним алгоритм перевода числа из десятичной системы в систему с основанием (см. презентацию), из него следует, что младшая цифра результата – это остаток от деления исходного числа на Решение: итак, нужно найти все целые числа , такие что остаток от деления 23 на равен 2, или (что то же самое) (*) где – целое неотрицательное число (0, 1, 2, …); сложность в том, что и , и неизвестны, однако здесь нужно «играть» на том, что это натуральные числа из формулы (*) получаем , так что задача сводится к тому, чтобы найти все делители числа 21, которые больше 2 в этой задаче есть только три таких делителя: и таким образом, верный ответ – 3, 7, 21 .
Решение (программа на Python, А.Н. Носкин): можно решить задачу с помощью программы: for i in range(3,50):# перебираем возможные основания x = 23 # число по условию x_N = '' while x > 0:# перевод в N-ю систему if x%i>9:break # пропускаем цифры в виде букв else: x_N += str(x%i) x //= i x_N = x_N[::-1]# разворот числа if x_N == '': pass elif x_N[-1]== "2": print(i, end=",") Ответ: 3, 7, 21. Решение (программа на Python, Б.С. Михлин): полная программа: for x in range(3, 22): # x - основание от 3 до 21 # (дальше перебирать нет смысла) if 23 % x == 2: print( x, end = ',' ) Ответ: 3, 7, 21. |