Лабораторная работа 1 Фундаментальные структуры данных Факториал Реализовать вычисление факториала чисел
Скачать 77.5 Kb.
|
Лабораторная работа №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! = 1 return 1 else: # общий случай, расчёт по формуле (1) f = 2 for i in range( 3, n + 1 ): f *= i return f Пример расчёта 500! = 12201368259911100687012387854230469262535743428031928421 92413588385845373153881997605496447502203281863013616477148203 5841633787220781772004807852051593292854779075719393306037729 6085908627042917454788242491272634430567017327076946106280231 04526442188787894657547771498634943677810376442740338273653974 713864778784954384895955375379904232410612713269843277457155463 0997720278101456108118837370953101635632443298702956389662891165 897476957208792692887128178007026517450776841071962439039432253 642260523494585012991857150124870696156814162535905669342381300 885624924689156412677565448188650659384795177536089400574523894 03357984763639449053130623237490664450488246650759467358620746 3792518420045936969298102226397195259719094521782333175693458150 8552332820762820023402626907898342451712006207714640979456116127 62914595123722991334016955236385094288559201872743379517301458635 7570828355780158735432768888680120399882384702151467605445407663 53598417443048012893831389688163948746965881750450692636533817505 5478128640000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000 000000000000000000 2. Индивидуальное заданиеВариант 40. Замечена следующая закономерность: 9 х 1+2=11 9 х 12 + 3 =111 9 х 123 + 4 =1111 9 х 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 = 1 units = 11 for k in range( 1, max ): if ( 9*ciphs + k + 1 ) == units: print( "9 *", ciphs, " + ", k + 1, "=", units ) ciphs = 10*ciphs + k + 1 units = 10*units + 1 Скриншот результатов работы скрипта |