книга заданий пайтон. книга практических заданий, pyton. Сборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Скачать 2.24 Mb.
|
Упражнение 78. Гипотеза Коллатца(Решено. 18 строк) Представьте себе последовательность целых чисел, организованную следующим образом. Начинаться последовательность должна с любого положительного числа Пока последний элемент последовательности не равен единице, выполнять Если последний элемент последовательности четный, тогда Добавить новый элемент к последовательности путем деления последнего элемента на два с округлением вниз Иначе Добавить новый элемент к последовательности путем умножения последнего элемента на три с добавлением единицы. Гипотеза Коллатца утверждает, что подобная последовательность при условии того, что начинается с положительного числа, рано или поздно завершится единицей. И хотя это так и не было доказано, все указывает на то, что это так и есть. Напишите программу, которая будет запрашивать у пользователя целое число и выводить все числа, начиная с введенного числа и заканчивая единицей. После этого пользователь должен иметь возможность ввести другое число и снова получить ряд чисел, называемый сиракузской последовательностью. Условием выхода из программы должен быть ввод пользователем нуля или отрицательного числа. Примечание. Гипотеза Коллатца по сей день остается одной из нерешенных проблем математики. Многие пытались представить доказательство, но никто не добился успеха. Упражнение 79. Наибольший общий делитель(Решено. 17 строк) Наибольший общий делитель двух положительных чисел представляет собой наибольшее число, на которое без остатка делятся оба числа. Существует несколько алгоритмов, позволяющих определить наибольший общий делитель двух чисел, включая следующий. Инициализируйте переменную d меньшим из чисел n и m Пока n или m не делятся на d без остатка, выполнять Уменьшить d на единицу Выведите на экран d, это и есть наибольший общий делитель для n и m Напишите программу, запрашивающую у пользователя два положительных целых числа и выводящую для них наибольший общий делитель. Упражнение 80. Простые множители(27 строк) Разложение целого числа n на простые множители может быть проведено по следующему алгоритму. Инициализируйте переменную factor значением 2 Пока значение factor меньше или равно n, выполнять Если n без остатка делится на factor, тогда Сохранить factor как простой множитель числа n Разделить n на factor с округлением вниз Иначе Увеличить factor на единицу Напишите программу, которая будет запрашивать целое число у пользователя. Если пользователь введет значение, меньшее двух, необходимо вывести соответствующее сообщение об ошибке. Иначе нужно перечислить в столбец список простых множителей заданного числа, которые при перемножении дали бы исходное число. Например: Введите целое число (2 или больше): 72 Простые множители числа 72: 2 2 2 3 3 Упражнение 81. Двоичное число в десятичное(18 строк) Напишите программу, которая будет преобразовывать двоичные значения (по основанию 2) в десятичные (по основанию 10). Пользователь должен ввести число в двоичном виде как строку, а программа – преобразовать его посимвольно в десятичный вид и вывести на экран с соответствующим сообщением. Упражнение 82. Десятичное число в двоичное(Решено. 27 строк) Напишите программу, которая будет преобразовывать десятичные значения (по основанию 10) в двоичные (по основанию 2). Запросите целое число у пользователя и, следуя алгоритму, приведенному ниже, преобразуйте его в двоичную запись. По завершении выполнения программы в переменной result должно оказаться двоичное представление исходного числа. Выведите результат на экран с соответствующим сообщением. Инициализируйте переменную result пустой строкой Пусть в переменной q хранится число, которое нужно преобразовать Повторять Переменной r присвоить остаток от деления q на 2 Преобразовать r в строку и добавить ее в начало переменной result Разделить q на 2 с отбрасыванием остатка и присвоить полученное значение переменной q Пока q не станет равно нулю |