[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Факториал числа 100
SuccessLord
Нужно посчитать сумму цифр в значении 100!
Первым делом нахожу само значение.

$factorial = 1;
for($i=2;$i<=100;$i++){
$factorial = $factorial * $i;
}
var_dump($factorial);

В результате на экране: float(9.33262154439E+157)

Если бы это было целочисленное число типа int, дальше я бы привел значение $factorial к типу (string)
После этого создаю массив, к примеру $fact = array();
Далее каждый символ переменной factorial присваиваю очередному элементу массива fact.
После этого функцией array_sum($fact) получаю сумму всех элементов массива, т.е. всех чисел значения 100!
Для небольших чисел, скажем 10! - работает без проблем.
Беда в том, что 100! - очень большое число. Там идет вроде "переполнение" и преобразует в float.

Каким образом можно значение 100! представить в виде integer?

Либо может быть есть иной способ найти сумму всех цифр, входящих в значение 100!
sergeiss
Это тестовое задание где-то или что-то другое?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
vital
Цитата
представить в виде integer?

Погуглите про решения на основе умножения "столбиком", оно же длинная арифметика.
Так в лоб - никак. Результат упадет, т.к. он просто не вмещается в int, никак.
пс.
Ответ:
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
SuccessLord
Цитата (sergeiss @ 12.07.2014 - 19:31)
Это тестовое задание где-то или что-то другое?

Да, тестовое задание. Пытаюсь разобраться.
SuccessLord
Цитата (vital @ 12.07.2014 - 19:56)
Ответ:
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

А каким образом можно получить это число с помощью PHP?
bestxp
для начала смотри сюда
echo PHP_INT_MAX;

но что-то мне подсказывает что в 64 битную адресацию не влезет, поэтому он преобразует к экспонентному виду.
kaww
SuccessLord, http://php.net/manual/ru/function.gmp-fact.php
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.