Цитата: Siberian от 07.02.2024 20:15:20Цитатаroot@ad55d1526ccb:~# time python -c "import math; print(math.factorial(1000))"
........0
real 0m0.090s
user 0m0.073s
sys 0m0.017s
root@ad55d1526ccb:~#
Другое дело, что тут
а) в реализации math.factorial под капотом сишный код работает
b) в целях обучения ребёнку действительно не плохо было бы уметь самому написать реализацию алгоритма вычисления факториала, сортировок и прочего
Цитата: gb от 07.02.2024 20:33:35Польза от такой задачи - околонулевая.
Цитата: ivan2 от 07.02.2024 20:27:57Просто для всех, кто не вникал и не вникает.
100! = 93 326 215 443 944 152 681 699 238 856 266 700 490 715 968 264 381 621 468 592 963 895 217 599 993 229 915 608 941 463 976 156 518 286 253 697 920 827 223 758 251 185 210 916 864 000 000 000 000 000 000 000 000.
Это примерно 93 умножить на 10 в 156 степени!
В какой компьютер вы такое число поместите, ЕСЛИ НЕ ЗАНИМАЕТЕСЬ ПРИКЛАДНОЙ МАТЕМАТИКОЙ? А это нифига не программирование как таковое.
Тем более для школьников.
.
Касательно приведённой распечатки.
Это наверное код ошибки и диагностика?
Цитатаroot@ad55d1526ccb:~# python -c "import math; print(math.factorial(100)); print(type(math.factorial(100)))"
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
root@ad55d1526ccb:~#
Цитатаroot@ad55d1526ccb:~# python -c "import math; print(math.factorial(10000))"
Traceback (most recent call last):
File "", line 1, in
ValueError: Exceeds the limit (4300) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit
root@ad55d1526ccb:~#
Цитатаroot@ad55d1526ccb:~# time python -c "import math; import sys; sys.set_int_max_str_digits(100000000); print(math.factorial(10000))"
2846259680917...тут еще дофига цифер...0000
real 0m0,090s
user 0m0,085s
sys 0m0,004s
root@ad55d1526ccb:~#
Цитата: gb от 07.02.2024 20:33:35В небольшой ноутбук помешается.
93 326 215 443 944 152 681 699 238 856 266 700 490 715 968 264 381 621 468 592 963 895 217 599 993 229 915 608 941 463 976 156 518 286 253 697 920 827 223 758 251 185 210 916 864 000 000 000 000 000 000 000 000
Польза от такой задачи - околонулевая.
Цитата: Siberian от 07.02.2024 20:45:48Нет, это факториал 1000 и время его вычисления - просто, чтобы показать, что вы несколько отстали от жизни. Не во всех языках тип "int" обязательно должен соответствовать машинному "слову". Например, в учебном языке Рапира, которому обучали в 80-ые годы, и для целых и для чисел с плавающией точкой был один тип "ЧИСЛО" и использовалась 128-и битовая арифметрика. Очень круто для того времени.
Хотите именно 100? Пожалуйста:Цитатаroot@ad55d1526ccb:~# python -c "import math; print(math.factorial(100)); print(type(math.factorial(100)))"
...
...
Цитата: ivan2 от 07.02.2024 19:59:33И чему равен факториал 100?
Хотя бы тип данных выходного числа укажите.
Цитата: gb от 07.02.2024 20:59:21int
Занимает в памяти 96 байт, требуется действительно 66 байт.
Цитата: gb от 07.02.2024 21:22:28import math, sys
res = math.factorial(100)
print(type(res))
print(sys.getsizeof(res))
Это все python 3.11 ))
Не знаю, как там в школе, а в ВШЭ на гуманитарных специальностях (философия, культурология) уже надо знать python на уровне pandas и matplotlib и сдать курсовки по анализу данных.
Цитата: gb от 07.02.2024 21:35:28А какие проблемы написать объекты? Это просто рутина.
Цитата: gb от 07.02.2024 18:18:46А зачем сейчас писать сортировку пузырем? Время изменилось. Сейчас надо учиться мыслить векторами, матрицами, тензорами. Это иной стиль мышления.
Цитата: gb от 07.02.2024 22:15:34При разработке НС надо написать два класса - формирование данных с аугментацией и преобразованием в нужный формат, и сама НС. Разумеется наследование, разумеется определяются всего пара-тройка методов в каждом, но это нужно для любой НС. Поэтому рутина.
Цитата: gb от 07.02.2024 19:42:10Программа вычисления факториала занимает две строчки:
import math
math.factorial(x)
Цитата: gb от 07.02.2024 22:22:41А мне не нужно вообще в принципе тащить факториал. Я даже представить себе не могу задачу, где нужен факториал. Это нечто не имеющее отношения к жизни.
Цитата: gb от 07.02.2024 22:31:17А факториал - нечто оторванное от жизни.
Цитата: gb от 07.02.2024 22:31:17Вы ошиблись. Я сам беру то, что мне нужно. Мне интересно сделать семантический поиск по персональной базе знаний - делаю. А факториал - нечто оторванное от жизни.
Цитата: gb от 07.02.2024 22:44:26Вы лучше попробуйте придумать практические кейсы, в которых нужен его расчёт.
Цитата: ivan2 от 07.02.2024 22:47:58В задачах определения вероятностей (например в оценки рисков) вполне.
Цитата: gb от 07.02.2024 22:51:53Например?
Цитата: Luddit от 07.02.2024 22:51:43В общем да, но там эти факториалы стопками на каждом углу стоят.
То есть возможно, что именно эти задачи лучше решать не в лоб через библиотечные факториалы, а делать отдельные функции хотя бы для случаев когда один факториал делится на другой.
Чтобы не получалось как в той истории "Вылить из чайника воду, задача сводится к предыдущей".
Цитата: gb от 07.02.2024 23:04:46Что это на практике, например.