Другие языки программирования и технологии

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

Для таких чисел можно напрямую
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.
Олег Карпов
Олег Карпов
88 972
Лучший ответ
Валентин Святенко только я так понимаю 10e46?
Олег Карпов Нет. 10⁴⁶=1*10⁴⁶=1e46
Ты либо не выучил, как пишется факториал, либо совсем тупой.

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

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

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

52! > 10^46

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

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

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

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

Словом, сложностей нет, но нудно.
Для ЭВМ-дело пары секунд)
Валентин Святенко Пример взят из 2х разных тем. По факту 52! и 10^46 это количество возможных комбинаций, и на практике нужно будет сравнивать внутреннее дерево, на наличие совпадений и выдавать переменной название массивов, с которыми затем предстоит работать.
.
Выполняя операцию сравнения над большими числами.
Можно разбить числа на множители, удобные для счёта, сократить одинаковые и взаимно сокращаемые и получить уже два числа, по которым и можно определить, какое больше