powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Работа с очень большими целыми числами
9 сообщений из 59, страница 3 из 3
Работа с очень большими целыми числами
    #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
9 сообщений из 59, страница 3 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Работа с очень большими целыми числами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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