Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите перевести число 9.33262154439E+157

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
filchakov
Отправлено: 17 Июля, 2011 - 20:05:38
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Здравствуйте, мне нужно посмотреть число 9.33262154439E+157 полностью. Мну нужно найти сумму всех цифр этого числа. А для этого нужно их все посмотреть. Подскажите как это сделать? Функции такой я не нашел.
 
 Top
White
Отправлено: 17 Июля, 2011 - 20:46:15
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




9.33262154439E+157 это 9.33262154439 умноженное на 10 в степени 157. это примерно 2 в 512 степени, т.е. одна переменная длинной в пол килобайта в полной записи

filchakov пишет:
Мну нужно найти сумму всех цифр этого числа

для этого вам нужно это число полностью, у вас есть только округленный вариант

(Отредактировано автором: 17 Июля, 2011 - 20:46:43)



-----
if(time()>1356048000) die();
 
 Top
filchakov
Отправлено: 17 Июля, 2011 - 20:51:00
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




White пишет:
для этого вам нужно это число полностью, у вас есть только округленный вариант
это я понимаю, я искал функцию которая распишет число полностью без округлений.
White пишет:
это примерно 2 в 512 степени

нужно точно, так как у меня есть ответ и он должен совпасть
 
 Top
Champion Супермодератор
Отправлено: 17 Июля, 2011 - 20:57:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




filchakov пишет:
нужно точно
Точно - так просто не получится. Либо нужно описать свой тип данных такой громадный, либо не нужно получать такое число. Лучше расскажи как задача звучит изначально. Наверное что-то вроде сделать то, то и то и у результатат посчитать сумму цифр? Тогда надо придумать, как получать промежуточные части числа и считать сумму цифр у них. Например, поработать с правыми 3 разрядами, поделить всё на 1000, продолжить свои действия и т д.
В общем, хотелось бы знать происхождение такой штуки.
(Добавление)
filchakov пишет:
я искал функцию которая распишет число полностью без округлений.
Если бы представляли, как данные в памяти представляются, то не искали бы, а сразу поняли, что нет такой функции, потому что нет такого типа данных.
 
 Top
filchakov
Отправлено: 17 Июля, 2011 - 21:03:07
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Нужно найти сумму чисел факториала. Число для которого ищется факториал довольно таки большое.
 
 Top
EuGen Администратор
Отправлено: 17 Июля, 2011 - 21:05:51
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Для этого Вам нужно реализовать алгоритм "длинной арифметики" - сложения и умножения.
Стандартная, между прочим, задача для олимпиад.
Вспомните, как складывать столбиком и как им умножать - и реализуйте это программно, а числа соответственно в виде строк хранить будете.
Ибо если n=100000000, то n! Вы не уместите ни в каком типе данных.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Champion Супермодератор
Отправлено: 17 Июля, 2011 - 21:08:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Возможно, действительно с делением надо играться - не давать числу переполнить integer, получить в конце последние 6 цифр числа. С double можно побольше.
Потом снова искать этот же факториал, но мутить что-то такое, чтобы в итоге получилось число из вторых 6 цифр и т д....
Проще релизовать что-то типа своего типа данных - структура из нескольких интегеров. И реализовать для нее переполнение правильно при умножении.
(Добавление)
Или да, или строку
(Добавление)
EuGen пишет:
если n=100000000, то n! Вы не уместите ни в каком типе данных.
Я думаю, что это и строка такая не хилая получится, если это число в строку записать)
 
 Top
EuGen Администратор
Отправлено: 17 Июля, 2011 - 21:13:25
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Можно. Но если последовательно умножать, то это цикл в обозримое число итераций.
Тем более что в итоге нужна сумма его цифр.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
White
Отправлено: 17 Июля, 2011 - 22:15:07
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




можно представить исходные данные в виде массива Byte(хватило бы и четырех битов), где каждая переменная отвечает определеному знаку числа, тогда можно и в столбик складывать, либо в двоичном виде и делать побитовое сложение.

P.S. а все таки интересно условие задачи узнать.


-----
if(time()>1356048000) die();
 
 Top
black_ru
Отправлено: 18 Июля, 2011 - 00:06:54
Post Id


Новичок


Покинул форум
Сообщений всего: 50
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Факториал числа 100 на калькуляторе дает именно такое число.

Если это так, то число.
Но я могу ошибаться

93326215443944152681699238856266 7004907159682643816214685929
638952175999932299156089414639761565182862536979208272237582
51185210916864000000000000000000 000000

Проверьте
http://ru.numberempire.com/factorialcalculator.php

(Отредактировано автором: 18 Июля, 2011 - 00:44:42)

 
 Top
filchakov
Отправлено: 18 Июля, 2011 - 03:29:14
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




black_ru пишет:
Факториал числа 100 на калькуляторе дает именно такое число.
Да все верно, я должен был получить это число.
Я его нашел через математические функции BCMath, они такое могут. Все спасибо ;)
 
 Top
black_ru
Отправлено: 18 Июля, 2011 - 03:51:06
Post Id


Новичок


Покинул форум
Сообщений всего: 50
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Радость А я методом приблизительного тыка, с 5 раза ткнул на n! на калькуляторе и оно вылетело.
больше времени ушло, чтобы найти калькулятор факториалов, а ссылка на него оказывается была, можно сказать, под самым носом, в Википедии.

(Отредактировано автором: 18 Июля, 2011 - 03:51:44)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB