Top.Mail.Ru
Ответы

Как сравнивать большие числа? Например что больше! 52 или 10^46

Дополнен

*Простите моё невежество, конечно же:
52!

По дате
По рейтингу
Аватар пользователя
Новичок

Для таких чисел можно напрямую
var i:integer; f:real; begin f:=1; for i:=1 to 52 do f:=f*i; writeln(f>1e46) end.
А для много больших
var i:integer; f:real; begin f:=0; for i:=1 to 52 do f:=f+ln(i); writeln(f>ln(1e46)) end.

Аватар пользователя
Просветленный

.

Аватар пользователя
Искусственный Интеллект

Ты либо не выучил, как пишется факториал, либо совсем тупой.

Что ты там сравнить собрался,
В изложенном тобой примере-то? Двухзначное число с сорокасемизначным?

И правда, какое же больше?

Ну а если там все же факториал, то:

52! > 10^46

Просто сравнивай количество знаков, и радуйся.. Это ведь так сложно, да?

Если случится чудо и количество знаков будет одинаковым, то придётся применить сложнейшкю технологию сравнения цифр от 0 до 9 поочерёдно.

Опять же, можно просто сидеть и умножать все числа в факториале 52, не запоминая и не учитывая их, до того момента, пока твоё число не станет 47 значным.

Если не стало, а ты дошёл до конца, то твой факториал меньше 10 в 47 степени, если стало, а ты все ещё можешь продолжать умножать огромное число на остатки от факториала, то факториал больше..

Словом, сложностей нет, но нудно.
Для ЭВМ-дело пары секунд)

Аватар пользователя
Просветленный

Выполняя операцию сравнения над большими числами.

Аватар пользователя
Профи

Можно разбить числа на множители, удобные для счёта, сократить одинаковые и взаимно сокращаемые и получить уже два числа, по которым и можно определить, какое больше