powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Работа с очень большими целыми числами
59 сообщений из 59, показаны все 3 страниц
Работа с очень большими целыми числами
    #39637448
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В настоящее время появляется целые положительные числа, размер которых порядка 1,0E+50 и более.
Такие числа можно раздробить и представить в виде массива.
Кто-нибудь имел дело с такими массивами при проведении вычислений между ними? Либо это где-то уже рассмотрено?
Или оставить только цифры высокого порядка и работать с одной ячейкой?
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39637453
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39637465
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STFW "длинная арифметика".
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39637644
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39637756
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy Usov,

double
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638007
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovВ настоящее время появляется целые положительные числа, размер которых порядка 1,0E+50 и более.
Такие числа можно раздробить и представить в виде массива.
Кто-нибудь имел дело с такими массивами при проведении вычислений между ними? Либо это где-то уже рассмотрено?
Или оставить только цифры высокого порядка и работать с одной ячейкой?
Это - в разрезе шахматных задач?
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638016
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonЭто - в разрезе шахматных задач?
Конечно.
А вот как сложить следующие числа:
2,23487E+41
496
121790
6,69449E+17
5,37882E+78 .
И при этом не потерять ни одной цифры.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638018
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovА вот как сложить следующие числа:
2,23487E+41
496
121790
6,69449E+17
5,37882E+78 .
И при этом не потерять ни одной цифры.А почему вы уверены, что в исходных данных записи в научной нотации являются точными?

Вы вообще читали хоть что-то про приближённые вычисления, относительную и абсолютную точности?
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638019
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Это - в разрезе шахматных задач?
И еще: есть направления задачи, где вычисляется 2 в степени 40, 125, 250 и другие степени.
А это
1,09951E+12
4,25353E+37
1,80925E+75
И сколько при этом цифр будет "срезано"?
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638025
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovА почему вы уверены, что в исходных данных записи в научной нотации являются точными?

Вы вообще читали хоть что-то про приближённые вычисления, относительную и абсолютную точности?
Такие данные получаются вследствие вычислений по алгоритмам.
Когда-то на мехмате слушал лекции про о(малые).
Поэтому в первом сообщении 21373938 и говорится о том, что нужно ли гоняться за о(малыми).
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638030
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovЛибо это где-то уже рассмотрено?
Бери Питон и не парься: там поддержка длинной арифметики "из коробки".
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638037
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovТакие данные получаются вследствие вычислений по алгоритмам.Вот прямо с восемью значащими десятичными цифрами, но, при этом требуется складывать значения, отличающиеся на десятки порядков???
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638039
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovGennadiy UsovТакие данные получаются вследствие вычислений по алгоритмам.Вот прямо с восемью значащими десятичными цифрами, но, при этом требуется складывать значения, отличающиеся на десятки порядков???
Математика требует точности в вычислениях. Раз такие разные слагаемые.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638053
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovBasil A. Sidorovпропущено...
Вот прямо с восемью значащими десятичными цифрами, но, при этом требуется складывать значения, отличающиеся на десятки порядков???
Математика требует точности в вычислениях. Раз такие разные слагаемые.
Математика оперирует не числами а символами. В твоем случае.
Сверх точность может потребоавться например для доказательства того что
Числовой ряд сходится.

Вопрос. Что у тебя за сравнение которому не хватило double.?
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638065
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Вопрос. Что у тебя за сравнение которому не хватило double.?
В EXCEL точность представления числа - 15 цифр. А какая точность представления числа у double?
2 в степени 200 - 60 цифр.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638072
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovВ EXCEL точность представления числа - 15 цифр. А какая точность представления числа у double?
Такая же.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638085
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovmaytonВопрос. Что у тебя за сравнение которому не хватило double.?
В EXCEL точность представления числа - 15 цифр. А какая точность представления числа у double?
2 в степени 200 - 60 цифр.
Это фейк. Вернее требует уточнения.

У double нет десятичного представления. И точка плавает. Тоесть на очень больших числах
у double - грубая точность (можно сравнивать расстояния между галлактиками) и на очень
мелких (расстояния между атомами вещества) точность повышается.

Побочный эффект - невозможно складывать очень большие и очень малые величины.
Большая величина не получит никакого прироста. Но это для double и не требуется.
Это величина для научных расчетов где важны старшие разряды мантиссы т.к. они
важны для оценок и сравнений.

А то что ты сравниваешь - это бухгалтерия. Для нее есть другие форматы чисел которые
по сабжу совершенно верно назвали.

Посмотри вот на онлайн калькулятор
http://www.binaryconvert.com/convert_double.html

Он наиболее точно показывает внутреннее представление.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638094
L1G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если уж приспичило складывать сильно отличающиеся числа - отсортируй по возрастанию и складывай их в этом порядке - потеряешь минимум
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638115
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonУ double нет десятичного представления. И точка плавает. Тоесть на очень больших числах
у double - грубая точность (можно сравнивать расстояния между галлактиками) и на очень
мелких (расстояния между атомами вещества) точность повышается.
В случаях когда с double надо работать как с целыми - важен размер мантиссы, а он 52 бита, т.е. без потерь можно представить число до 2^52 или 4.5*10 15 , вот откуда те самые 15 десятичных знаков.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638126
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovМатематика требует точности в вычислениях. Раз такие разные слагаемые.Глупо говорить о точности при записи с 15-18 значащими цифрами и разнице в 60 десятичных порядков.
Перевожу: точность вы уже потеряли и можете ничего не складывать - результат от этого не изменится.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638358
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy Usov,

тынц
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638407
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovИли оставить только цифры высокого порядка и работать с одной ячейкой?смотря что за задача.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638417
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видел недавно на странице сообщении о работе с массивом, где хранится вся информация о числе, когда считается N!, и не могу найти.

Со своей стороны попробую сделать простой алгоритм по такому же принципу.

Задача: найти числа для 2 в степени N для любого N.
Имеется число Q, которое определяет степень разделения числа на группы, например Q=10000000000. (10 в 10-ой степени)
Имеется массив Р(К), 1<=j<=K. P(1)=1. Допустим К = 10. Больше не встречал.
1<=i<=N,
1<=j<=K.
если P(j)>0 то P(j) = P(j) x 2
если P(j)>=Q то (P(j)=P(j)-Q, P(j+1)=P(j+1)+1)

Тогда число будет выглядеть как сумма P(j) х (Q в степени (j-1))

Иногда может быть случай, когда после прибавления 1 все P(j) >= Q.
Тогда цикл
если P(j+1)>=Q то (P(j+1)=P(j+1)-Q, P(j+2)=P(j+2)+1) и т.д. с выходом из цикла если <Q.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638565
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На основании выше указанного алгоритма было определено значение 2 в степени 100:

1267650600228229401496703205376

Если делать вычисления с использованием одной переменной, то получается:

1267650600228230000000000000000
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638568
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovВидел недавно на странице сообщении о работе с массивом, где хранится вся информация о числе, когда считается N!, и не могу найти.

Со своей стороны попробую сделать простой алгоритм по такому же принципу.
Ничего не понятно, если честно. Давай попроще пример, число 100500 как должно выглядеть по твоему?
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638569
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovНа основании выше указанного алгоритма было определено значение 2 в степени 100:

1267650600228229401496703205376

Если делать вычисления с использованием одной переменной, то получается:

1267650600228230000000000000000
Точность double - 15 десятичных знаков, больше не получится. Чудес не бывает.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638576
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TGennadiy UsovНа основании выше указанного алгоритма было определено значение 2 в степени 100:

1267650600228229401496703205376

Если делать вычисления с использованием одной переменной, то получается:

1267650600228230000000000000000
Точность double - 15 десятичных знаков, больше не получится. Чудес не бывает.
Данное решение получено за счет 4-х чисел массива Р(К), которые имеют 3 раза по 10 цифр (меньше 15 десятичных знаков) и 1 раз 1 цифра. Всего 31 цифра.
Все согласно алгоритму 21379400 Q=10000000000. (10 в 10-ой степени)
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638577
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TGennadiy UsovВидел недавно на странице сообщении о работе с массивом, где хранится вся информация о числе, когда считается N!, и не могу найти.

Со своей стороны попробую сделать простой алгоритм по такому же принципу.
Ничего не понятно, если честно. Давай попроще пример, число 100500 как должно выглядеть по твоему?
Так и выглядеть.
Алгоритм нужен для тех целых чисел, которые превышают, и значительно, 10 в 15-ой степени. С целью найти все цифры, которые составляют данное число.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638585
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy Usov... С целью найти все цифры, которые составляют данное число.

Если предлагаемый способ не позволяет найти число *всех* размещений,
а только некоторую неизвестную часть от точно неизвестного количества,
то зачем нужна абсолютная точность?
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638614
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksandr SharahovGennadiy Usov... С целью найти все цифры, которые составляют данное число.

Если предлагаемый способ не позволяет найти число *всех* размещений,
а только некоторую неизвестную часть от точно неизвестного количества,
то зачем нужна абсолютная точность?
А почему не позволяет?
Если сравнивать два решения задачи определения 2 в степени 100 21380238 , то первое решение точное, а второе решение - приближенное, которое больше точного на:
598504296794624

А решение получается приближенным потому, что размер ячейки на компьютере не более 10 в степени 15.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638619
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Размер ячейки компьютера" может достигать ста двадцати восьми бит и даже кратно превышать этот размер.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638621
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovAleksandr Sharahovпропущено...


Если предлагаемый способ не позволяет найти число *всех* размещений,
а только некоторую неизвестную часть от точно неизвестного количества,
то зачем нужна абсолютная точность?
А почему не позволяет?

Потому, что *всех* решений на десятки порядков больше.
Предлагаемым способом можно найти только небольшую часть *модулярных* решений,
которых тоже на много порядков больше.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638642
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksandr SharahovGennadiy Usovпропущено...

А почему не позволяет?

Потому, что *всех* решений на десятки порядков больше.
Предлагаемым способом можно найти только небольшую часть *модулярных* решений,
которых тоже на много порядков больше.
Все смешалось, и модулярные туда же...

Все очень просто:
Есть число А = 123456. У него 6 цифр и они видны.
Есть выражение 2 в степени 200, в результате решения которого получается число В = 1Е+78, у каторого известно только 15 цирр из 79.

Смысл алгоритма: найти все 79 цифр числа В!
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638644
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovAleksandr Sharahovпропущено...


Потому, что *всех* решений на десятки порядков больше.
Предлагаемым способом можно найти только небольшую часть *модулярных* решений,
которых тоже на много порядков больше.
Все смешалось, и модулярные туда же...

Все очень просто:
Есть число А = 123456. У него 6 цифр и они видны.
Есть выражение 2 в степени 200, в результате решения которого получается число В = 1Е+78, у каторого известно только 15 цирр из 79.

Смысл алгоритма: найти все 79 цифр числа В!2^200 это очень небольшое число, для математики.
а если задача дает выражение вида 9^9^9 ?
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638660
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovAleksandr Sharahovпропущено...


Потому, что *всех* решений на десятки порядков больше.
Предлагаемым способом можно найти только небольшую часть *модулярных* решений,
которых тоже на много порядков больше.
Все смешалось, и модулярные туда же...

Все очень просто:
Есть число А = 123456. У него 6 цифр и они видны.
Есть выражение 2 в степени 200, в результате решения которого получается число В = 1Е+78, у каторого известно только 15 цирр из 79.

Смысл алгоритма: найти все 79 цифр числа В!

Это точно, все смешалось.
Когда некто покупает картошку, то указывает/получает вес с точностью 2-4 знака.
И ему совершенно пофигу, сколько там в ней нейтронов, протонов и электронов.

По условию, точное решение необходимо для задачи подсчета *всех* размещений ферзей.
Зачем нужен точный подсчет части модулярных решений предлагаемым алгоритмом остается неясным.

Например, все знают алгоритм, с помощью которого всегда можно получить ровно одно решение.
И что с того?
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638665
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
S.G.]2^200 это очень небольшое число, для математики.
а если задача дает выражение вида 9^9^9 ?
Пока меня интересует 2^200, поскольку это выражение помогает найти решения на доске 1000х1000.
Что касается второго выражения, то, наверное, вы знаете как это выражение применить.
При нахождении цифр значения этого выражения не должно быть особых проблем.
Главное: вы должны сообщить порядок числа, которое является значением данного выражения, и разыскать компьютер, который справится в разумное время с данной задачей.
А то мне уже говорили на данной странице, что даже для получения всех сочетаний из 200 чисел может не хватить времени в обозримом будущем.
А что касается массивов, то для 2^200 заполняется массив Р(8) по 10 цифр.
Так что довольно просто заполнить массив Р(348678440), в каждом из которых будет 10 цифр.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638666
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksandr Sharahov
По условию, точное решение необходимо для задачи подсчета *всех* размещений ферзей.
Зачем нужен точный подсчет части модулярных решений предлагаемым алгоритмом остается неясным.

Например, все знают алгоритм, с помощью которого всегда можно получить ровно одно решение.
И что с того?
Вы забыли про счетчик числа всех сочетаний из 200 чисел.
Как к 1,2345Е+38 прибавить 1?
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638674
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovAleksandr SharahovПо условию, точное решение необходимо для задачи подсчета *всех* размещений ферзей.
Зачем нужен точный подсчет части модулярных решений предлагаемым алгоритмом остается неясным.

Например, все знают алгоритм, с помощью которого всегда можно получить ровно одно решение.
И что с того?
Вы забыли про счетчик числа всех сочетаний из 200 чисел.
Как к 1,2345Е+38 прибавить 1?

Первый вопрос: Зачем? Что нам такого дополнительно дает знание суммы? Что дальше с ней делать будем?
Второй: Почему нельзя использовать оценки вместо точных значений?
Третий: Почему нельзя складывать слагаемые разных порядков раздельно?
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638678
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksandr SharahovGennadiy Usov
Вы забыли про счетчик числа всех сочетаний из 200 чисел.
Как к 1,2345Е+38 прибавить 1?

Первый вопрос: Зачем? Что нам такого дополнительно дает знание суммы? Что дальше с ней делать будем?
Второй: Почему нельзя использовать оценки вместо точных значений?
Третий: Почему нельзя складывать слагаемые разных порядков раздельно?
А дальше, зная суммы, будем следующие числа складывать. Ведь их много (решений).
А как же математическая (не физическая) точность?
А как сложить 1,2345Е+38 и 123456?
Оценка нужна только для того, чтобы понять: а куда мы влезли? и что делать дальше?
На то она и оценка, а не решение.

Так вы ничего не сказали про счетчик
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638681
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovAleksandr Sharahovпропущено...


Первый вопрос: Зачем? Что нам такого дополнительно дает знание суммы? Что дальше с ней делать будем?
Второй: Почему нельзя использовать оценки вместо точных значений?
Третий: Почему нельзя складывать слагаемые разных порядков раздельно?
А дальше, зная суммы, будем следующие числа складывать. Ведь их много (решений).
А как же математическая (не физическая) точность?
А как сложить 1,2345Е+38 и 123456?
Оценка нужна только для того, чтобы понять: а куда мы влезли? и что делать дальше?
На то она и оценка, а не решение.

Так вы ничего не сказали про счетчик

Допустим, мы посчитали точную финальную сумму - количество решений вашего алгоритма.
Зачем нам она? Что дальше с ней делать будем?

Про счетчик не понял, что надо про него сказать?
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638687
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovПока меня интересует 2^200
Код: python
1.
2.
3.
4.
5.
ActivePython 2.7.10.12 (ActiveState Software Inc.) based on
Python 2.7.10 (default, Aug 21 2015, 12:07:58) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> pow(2,200)
1606938044258990275541962092341162602522202993782792835301376L
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638695
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Тут мне кажется нужно оперировать сравнениями. Например. Не все калькуляторы считают
2^128 степени а нам надо посчитать влезет ли число в десятичную (символьную) сетку
в базу данных.

Здесь к примеру криптография - яркий пример. Наука базирующаяся на "оценках". Типа через
быстро (от нескольких секунд до минут), медленно (дни) либо никогда (столетия) мы раскроем
ключ.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638794
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov>>> pow(2,200)
1606938044258990275541962092341162602522202993782792835301376L


Отлично!
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638796
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поскольку появляются вместо больших чисел массивы чисел, то необходимо ввести арифметические операции для этих чисел.
Операция сложения больших чисел.
Пусть имеется два больших числа (одно может быть обычным числом):
Р1(N1) и P2(N2).
В каждой ячейке этих массивов будем хранить не более 10 цифр. Q=10000000000.
Сумма этих массивов будет массивом Р(N), где N = max(N1,N2).
P(j)=0, 1<=j<=N.
Тогда
1<=j<=N.
P(j) = P1(j) + P(j)
если P(j)>=Q то (P(j)=P(j)-Q, P(j+1)=P(j+1)+1)
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638797
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gennadiy UsovТогда
1<=j<=N.
P(j) = P1(j) + P(j)
если P(j)>=Q то (P(j)=P(j)-Q, P(j+1)=P(j+1)+1)
Ошибка.
Следует читать:
Тогда
1<=j<=N.
P(j) = P1(j) + P2(j)
если P(j)>=Q то (P(j)=P(j)-Q, P(j+1)=P(j+1)+1)
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638833
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovDimitry Sibiryakov>>> pow(2,200)
1606938044258990275541962092341162602522202993782792835301376L


Отлично!
Кстати. Ты завязывай со своим Excel-ем. Тебе Дмитрий дал пример
эффективного использования Питона. Бери на заметку.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39638979
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy Usov Операция сложения больших чисел.
Вот тебе исходник бенчмарка некоторых операций над большими числами.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39714030
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovGennadiy UsovПока меня интересует 2^200
Код: python
1.
2.
3.
4.
5.
ActivePython 2.7.10.12 (ActiveState Software Inc.) based on
Python 2.7.10 (default, Aug 21 2015, 12:07:58) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> pow(2,200)
1606938044258990275541962092341162602522202993782792835301376L

Число хорошее. Даже супер!
А как это число сохранить в памяти ЭВМ?
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39714034
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovЧисло хорошее. Даже супер!
А как это число сохранить в памяти ЭВМ?
Код: python
1.
2.
3.
4.
5.
6.
7.
Python 2.7.15 (default, Jun 17 2018, 22:57:51) 
[GCC 7.3.0] on linux2
>>> pow(2,800)
6668014432879854274079851790721257797144758322315908160396257811764037237817632071521432200871554290742929910593433240445888801654119365080363356052330830046095157579514014558463078285911814024728965016135886601981690748037476461291163877376L
>>> a=pow(2,800)
>>> print a
6668014432879854274079851790721257797144758322315908160396257811764037237817632071521432200871554290742929910593433240445888801654119365080363356052330830046095157579514014558463078285911814024728965016135886601981690748037476461291163877376
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39714036
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovDimitry Sibiryakovпропущено...
Код: python
1.
2.
3.
4.
5.
ActivePython 2.7.10.12 (ActiveState Software Inc.) based on
Python 2.7.10 (default, Aug 21 2015, 12:07:58) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> pow(2,200)
1606938044258990275541962092341162602522202993782792835301376L

Число хорошее. Даже супер!
А как это число сохранить в памяти ЭВМ?
Как строку.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39714039
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonDimitry Sibiryakov>>> pow(2,200)
1606938044258990275541962092341162602522202993782792835301376LGennadiy UsovЧисло хорошее. Даже супер!
А как это число сохранить в памяти ЭВМ?Как строку.А точнее, в операторах
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39714040
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy Usovmaytonпропущено...
пропущено...
Как строку.А точнее, в операторах
Не понял. Например.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39714056
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonGennadiy UsovА точнее, в операторахНе понял. Например.Просто как это число или массив чисел написать в программе.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39714145
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy Usovmaytonпропущено...
Не понял. Например.Просто как это число или массив чисел написать в программе.
В рамках языка программирования JavaScript который ты (теоретически) используешь
для описания своих алгоритмов - никак. В базовой комплектации JavaScript
поддерживает следующие типы данных.

https://learn.javascript.ru/types-intro

Спеку сейчас не могу найти но вся арифметика JavaScript (кроме индексов массивов) вычисляется
в вещественном типе double.

Поэтому встроенные типы нам позволят задать максимум 1.7976931348623158e+308 как обычно с потерей точности
младших разрядов.

Но в интернетах полно библиотек которые расширяют JavaScript добавляя в него классы новой алгебры
с новыми свойствами. К сожалению работать с ними надо немного по другому.

Например:

Код: javascript
1.
2.
3.
x = new Big("1606938044258990275541962092341162602522202993782792835301376L");
y = new Big(2.0);
z = x.times(y); 


Здесь z = x * y

Ссылки по теме:
https://github.com/MikeMcl/big.js/

Вобщем ... javascript это как раз самый неудачный язык для длинной арифметики.
Здесь С++ или Scala были бы в самый раз.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39714354
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonGennadiy UsovПросто как это число или массив чисел написать в программе.В рамках языка программирования JavaScript который ты (теоретически) используешь
для описания своих алгоритмов - никак.
Но в интернетах полно библиотек которые расширяют JavaScript добавляя в него классы новой алгебры
с новыми свойствами. К сожалению работать с ними надо немного по другому.
Вобщем ... javascript это как раз самый неудачный язык для длинной арифметики.
Здесь С++ или Scala были бы в самый раз.Что-то мне подсказывает, что в программах нужно избегать очень, очень больших ("длинных") чисел. Поэтому необходимо понять: а где у нас появляются большие числа.

Если говорить об алгоритмах в задаче N ферзей, то при описании алгоритмов имеется три вида больших чисел:
- количество сочетаний;
- количество решений для метода матрицы в матрице;
- количество решений самой задачи.

Поскольку во всех описаниях алгоритмов, где имеют место сочетания, присутствует 2 в степени K, то надо хранить (и выводить на печать) не 2^К, а просто К (подразумевая, что это степень).
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39714468
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy Usovmaytonпропущено...
В рамках языка программирования JavaScript который ты (теоретически) используешь
для описания своих алгоритмов - никак.
Но в интернетах полно библиотек которые расширяют JavaScript добавляя в него классы новой алгебры
с новыми свойствами. К сожалению работать с ними надо немного по другому.
Вобщем ... javascript это как раз самый неудачный язык для длинной арифметики.
Здесь С++ или Scala были бы в самый раз.Что-то мне подсказывает, что в программах нужно избегать очень, очень больших ("длинных") чисел. Поэтому необходимо понять: а где у нас появляются большие числа.

Если говорить об алгоритмах в задаче N ферзей, то при описании алгоритмов имеется три вида больших чисел:
- количество сочетаний;
- количество решений для метода матрицы в матрице;
- количество решений самой задачи.

Поскольку во всех описаниях алгоритмов, где имеют место сочетания, присутствует 2 в степени K, то надо хранить (и выводить на печать) не 2^К, а просто К (подразумевая, что это степень).
Это 100 % верная мысль. Лучше такие числа не использовать.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39714755
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут еще можно пойти от операций. Форма хранения должна отражать какую-то приспособленность.
Например если мы будем только возводить в степени двойки ну ... пускай так и будет "2^200", "2^201".
Алгебраическая форма записи числа. А если будем сравнивать - например что больше
2^20 или 10^6 надо будет уже исло материализовывать или преобразовывать.

По поводу операций с битами AND/OR/XOR. Длинное число можно представить строкой в формате BinHex
и свести битовые операции с операцией над 4-х битовыми символами от 0 до F. В языке PL/SQL я
раз использовал такой подход чтоб эмулировать арифметику битовых карт которой там не было изначально
на уровне language.

Десятичная система для операций с битами непригодна.

Кроме того я убежден что задачу ферзей надо решать без прямых расчетов длинных чисел.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39714916
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovDimitry Sibiryakovпропущено...
Код: python
1.
2.
3.
4.
5.
ActivePython 2.7.10.12 (ActiveState Software Inc.) based on
Python 2.7.10 (default, Aug 21 2015, 12:07:58) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> pow(2,200)
1606938044258990275541962092341162602522202993782792835301376L


Число хорошее. Даже супер!
А как это число сохранить в памяти ЭВМ?мы все смотрим на это число на наших ЭВМ, а значит - его можно сохранить.
...
Рейтинг: 0 / 0
Работа с очень большими целыми числами
    #39715000
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonКроме того я убежден что задачу ферзей надо решать без прямых расчетов длинных чисел.На самом деле, всё намного проще.

Мы можем сколько угодно говорить о количестве сочетаний 2^100, 2^250, 2^1000 и т.д., но ЭВМ "говорит" нам, что она "переварит" только около 1,0Е+18 решений (доска 27х27, или что-то похожее). А количество решений где-то совпадают с количеством сочетаний, которые могут использоваться при определении этих решений. Может быть алгоритмы МЭА дадут некоторую прибавку по количеству решений по сравнению с методом поиска с возвратом.

И всё.
...
Рейтинг: 0 / 0
59 сообщений из 59, показаны все 3 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Работа с очень большими целыми числами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]