Максимальный целочисленный диапазон, примерно на каждой (современной) платформе, 2^31 - 1
(хотя по стандарту int
требуется не менее 16 бит). Для вашей данной платформы она будет определена как INT_MAX
в <limits.h>
.
100!
, очевидно, намного превышает это. Чтобы вычислить что-то такое большое в C
, вам понадобится большая целочисленная библиотека, такая как GMP.
Как предостережение, если вы решите попробовать использовать double
(который может содержать номера этого размера), вы получите неправильный ответ из-за потери точности. Это легко заметить - на моей машине последние цифры - 48
, что явно бессмысленно: 100!
должно делиться на 100, следовательно, должно быть 00
в качестве двух последних цифр.
Итак, какова точка 'C#' и 'java' тегов? –
Предполагая, что вы используете C#, вы можете прочитать ответ [здесь] (http://stackoverflow.com/questions/10624815/how-can-i-use-bigint-with-c). В Java вы можете использовать 'java.math.BigInteger'. –
Вы не можете иметь бесконечный целочисленный диапазон, потому что ваш компьютер не имеет бесконечной памяти для его хранения. –