Файл: Лабораторная работа 1 Фундаментальные структуры данных Факториал Реализовать вычисление факториала чисел.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 01.12.2023
Просмотров: 44
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Лабораторная работа №1Фундаментальные структуры данных
где ciphskи unitsk определяются рекуррентноciphsk= 10 ciphsk-1 + k + 1, ciphs1 = 1;unitsk= 10 ciphsk-1 + 1, units1 = 11. Программная реализацияmax = 10 # максимальное количество итераций ciphs = 1units = 11for k in range( 1, max ):if ( 9*ciphs + k + 1 ) == units:print( "9 *", ciphs, " + ", k + 1, "=", units )ciphs = 10*ciphs + k + 1units = 10*units + 1Скриншот результатов работы скрипта
1. Факториал
Реализовать вычисление факториала чисел (на различных целочисленных типах). Определить допустимые диапазоны вычислений.В языке Python используется два целочисленных типа: целые числа, длинные целые числа.Целочисленный тип представляет диапазон чисел от -2147483648 до 2147483647. Тип длинных целых чисел способен представлять числа неограниченной величины (ограничение накладывается только объемом доступной памяти).Несмотря на то, что существует два целочисленных типа, интерпретатор Python старается скрыть имеющиеся различия — когда целое число выходит за допустимый диапазон, происходит переключение на длинную арифметику. Это позволяет работать с числами произвольной длины (пока хватает памяти), ценой увеличения времени работы (так как в этом случае арифметические операции реализуются не аппаратно, а программно). По определению факториал числа n естьn! = 1·2·3· … ·n, 0! = 1 (1)Программная реализацияdef factorial( n ):if n < 0: # факториал определён только для return None # неотрицательных целых чисел if n == 0 or n == 1: # 0! = 1! = 1return 1else: # общий случай, расчёт по формуле (1) f = 2for i in range( 3, n + 1 ):f *= ireturn fПример расчёта500! = 12201368259911100687012387854230469262535743428031928421924135883858453731538819976054964475022032818630136164771482035841633787220781772004807852051593292854779075719393306037729608590862704291745478824249127263443056701732707694610628023104526442188787894657547771498634943677810376442740338273653974713864778784954384895955375379904232410612713269843277457155463099772027810145610811883737095310163563244329870295638966289116589747695720879269288712817800702651745077684107196243903943225364226052349458501299185715012487069615681416253590566934238130088562492468915641267756544818865065938479517753608940057452389403357984763639449053130623237490664450488246650759467358620746379251842004593696929810222639719525971909452178233317569345815085523328207628200234026269078983424517120062077146409794561161276291459512372299133401695523638509428855920187274337951730145863575708283557801587354327688886801203998823847021514676054454076635359841744304801289383138968816394874696588175045069263653381750554781286400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002. Индивидуальное задание
Вариант 40. Замечена следующая закономерность:9 х 1+2=119 х 12 + 3 =1119 х 123 + 4 =11119 х 1234 + 5 =11111Написать программу, подтверждающую эту закономерность.Данная закономерность описывается уравнением9 ciphsk + k + 1 = unitsk, k = 1, 2, ... (2)где ciphskи unitsk определяются рекуррентноciphsk= 10 ciphsk-1 + k + 1, ciphs1 = 1;unitsk= 10 ciphsk-1 + 1, units1 = 11. Программная реализацияmax = 10 # максимальное количество итераций ciphs = 1units = 11for k in range( 1, max ):if ( 9*ciphs + k + 1 ) == units:print( "9 *", ciphs, " + ", k + 1, "=", units )ciphs = 10*ciphs + k + 1units = 10*units + 1Скриншот результатов работы скрипта