2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3, 4  След.
 
 Подскажите приложение для вычисления "длинной арифметики"?
Сообщение10.08.2021, 20:49 


10/08/21
30
Необходимо возвести число в очень большую степень с выводом результата в файл. Есть ли какие-то, хотя бы (даже очень желательно) консольные приложения для реализации подобной задачи?

Основание степени: 2
Показатель степени: восьмизначное число.

Понятное дело, что задача не из простых, но думаю вполне решаема. Результат такого возведения вполне исчисляемое число...


Вообще, интересуют программные решения для операции с такими числами. Не только конкретная задача. Когда-то давно очень, читал про программные пакеты для операций в области длинной арифметики, но сейчас найти ничего не могу. Возможно речь шла про Linux. Мне же сейчас необходимо решения под ОС Win.

 Профиль  
                  
 
 Re: Подскажите приложение для вычисления "длинной арифметики"?
Сообщение10.08.2021, 21:07 
Заслуженный участник
Аватара пользователя


16/07/14
5177
Москва
В такой формулировке - просто интерпретатор python справится (там есть встроенная длинная арифметика). На моей машине $2^{12345678}$ считается за 50 секунд (и получается 3716421 разрядов).

 Профиль  
                  
 
 Re: Подскажите приложение для вычисления "длинной арифметики"?
Сообщение10.08.2021, 21:24 


10/08/21
30
mihaild в сообщении #1528470 писал(а):
В такой формулировке - просто интерпретатор python справится (там есть встроенная длинная арифметика). На моей машине $2^{12345678}$ считается за 50 секунд (и получается 3716421 разрядов).


Увы, с python практически не знаком. Есть познания (не большие) в С++. Но хотелось бы заиметь готовое решение. Имеется ввиду утилита или пакет.

Есть отдельная аналогичная задача для девятизначного показателя.

-- 10.08.2021, 21:26 --

SageMath - поддерживает подобные вычисления? Не совсем понял...

 Профиль  
                  
 
 Re: Подскажите приложение для вычисления "длинной арифметики"?
Сообщение10.08.2021, 21:30 
Заслуженный участник


25/02/11
1746
Математические пакеты вроде Maple не устраивают?

 Профиль  
                  
 
 Re: Подскажите приложение для вычисления "длинной арифметики"?
Сообщение10.08.2021, 21:36 


10/08/21
30
Цитата:
Математические пакеты вроде Maple не устраивают?


В принципе - устраивают, но желательно бесплатные по лицензии. Я пока наковырял SageMath - это по-моему аналог. Я не специалист по математическому софту, да и задача у меня не в математическом решении, а подборе софта для него. Хотелось бы минималистичное решение. Ставить огромный пакет (тот же SageMath ~ 4Gb всяких возможностей) ради очень ограниченной задачи - не комильфо...

-- 10.08.2021, 21:36 --

Пока попробую на примере SageMath :-) Если разберусь...

 Профиль  
                  
 
 Re: Подскажите приложение для вычисления "длинной арифметики"?
Сообщение10.08.2021, 22:16 


05/09/16
9454
uzlprog в сообщении #1528468 писал(а):
Необходимо возвести число в очень большую степень с выводом результата в файл. Есть ли какие-то, хотя бы (даже очень желательно) консольные приложения для реализации подобной задачи?

PARI/GP -- вычисления произвольной длины. Консольное приложение. Linux и Windows. Сайт: https://pari.math.u-bordeaux.fr
Тема на dxdy: «интерактивный курс: введение в программирование на PARI/GP»

Подсчет $3543$-й цифры справа десятичной записи числа $2^{999999999}$
? floor(2^(999999999)*10^(-3542)) % 10
%1 = 5
? ##
*** last result computed in 2,559 ms.
?

Меньше 3 секунд. Искомая цифра равна 5.
Стек пришлось увеличить до гигабайта, ну это и немного по теперешним меркам :)

mihaild в сообщении #1528470 писал(а):
Понятное дело, что задача не из простых, но думаю вполне решаема.

Не, это очень простая задача, на самом деле :)

 Профиль  
                  
 
 Re: Подскажите приложение для вычисления "длинной арифметики"?
Сообщение10.08.2021, 22:21 


21/05/16
4157
Аделаида
uzlprog в сообщении #1528472 писал(а):
Увы, с python практически не знаком.

Держите программу:
Используется синтаксис Python
s = str(2 ** 12345678)
file = open('file.txt', 'w')
file.write(s)

 Профиль  
                  
 
 Re: Подскажите приложение для вычисления "длинной арифметики"?
Сообщение10.08.2021, 22:38 


05/09/16
9454
mihaild в сообщении #1528470 писал(а):
На моей машине $2^{12345678}$ считается за 50 секунд (и получается 3716421 разрядов).

Это как-то очень долго, или это вместе с записью файл? А, и разрядов у вас как-то на один боьше получилось чем надо, вроде :)

 Профиль  
                  
 
 Re: Подскажите приложение для вычисления "длинной арифметики"?
Сообщение10.08.2021, 23:03 
Заслуженный участник
Аватара пользователя


16/07/14
5177
Москва
wrest в сообщении #1528484 писал(а):
Это как-то очень долго, или это вместе с записью файл?
Нет, это без записи в файл. Это перевод в десятичную систему столько времени занимает.
wrest в сообщении #1528484 писал(а):
А, и разрядов у вас как-то на один боьше получилось чем надо
Да, я считал через wc, которое еще \n посчитало:)
uzlprog в сообщении #1528475 писал(а):
Пока попробую на примере SageMath :-) Если разберусь...
В любом случае работа с файлами средствами всё того же python.

 Профиль  
                  
 
 Re: Подскажите приложение для вычисления "длинной арифметики"?
Сообщение10.08.2021, 23:22 


05/09/16
9454
mihaild в сообщении #1528488 писал(а):
Нет, это без записи в файл. Это перевод в десятичную систему столько времени занимает.

А, ну тоже долго, pari/gp делает массив из десятичных цифр за чуть меньше секунды.

(Оффтоп)

? b=digits(2^(12345678));
? ##
*** last result computed in 951 ms.
?

 Профиль  
                  
 
 Re: Подскажите приложение для вычисления "длинной арифметики"?
Сообщение10.08.2021, 23:54 


10/08/21
30
wrest в сообщении #1528481 писал(а):
uzlprog в сообщении #1528468 писал(а):
Необходимо возвести число в очень большую степень с выводом результата в файл. Есть ли какие-то, хотя бы (даже очень желательно) консольные приложения для реализации подобной задачи?

PARI/GP -- вычисления произвольной длины. Консольное приложение. Linux и Windows. Сайт: https://pari.math.u-bordeaux.fr
Тема на dxdy: «интерактивный курс: введение в программирование на PARI/GP»


PARI/GP поставил, понравилось. Но пока не понял как вывести результат возведения в степень целиком, или как это можно выгрузить в файл. ??

 Профиль  
                  
 
 Re: Подскажите приложение для вычисления "длинной арифметики"?
Сообщение10.08.2021, 23:55 
Заслуженный участник
Аватара пользователя


16/07/14
5177
Москва
wrest в сообщении #1528491 писал(а):
А, ну тоже долго, pari/gp делает массив из десятичных цифр за чуть меньше секунды
Ну да, gnu mp справляется за 400 миллисекунд. Я краем глаза глянул, кажется в cpython совсем простой метод используется https://github.com/python/cpython/blob/ ... ct.c#L1632

 Профиль  
                  
 
 Re: Подскажите приложение для вычисления "длинной арифметики"?
Сообщение10.08.2021, 23:56 


10/08/21
30
mihaild в сообщении #1528488 писал(а):
wrest в
[quote="uzlprog в сообщении #1528475
писал(а):
Пока попробую на примере SageMath :-) Если разберусь...
В любом случае работа с файлами средствами всё того же python.


Пока SageMath не осилил :-(

-- 10.08.2021, 23:57 --

kotenok gav в сообщении #1528483 писал(а):
uzlprog в сообщении #1528472 писал(а):
Увы, с python практически не знаком.

Держите программу:
Используется синтаксис Python
s = str(2 ** 12345678)
file = open('file.txt', 'w')
file.write(s)


Моя благодарность! Так просто ))

-- 11.08.2021, 00:01 --

wrest в сообщении #1528481 писал(а):
uzlprog в сообщении #1528468 писал(а):
Необходимо возвести число в очень большую степень с выводом результата в файл. Есть ли какие-то, хотя бы (даже очень желательно) консольные приложения для реализации подобной задачи?

PARI/GP -- вычисления произвольной длины. Консольное приложение. Linux и Windows. Сайт: https://pari.math.u-bordeaux.fr
Тема на dxdy: «интерактивный курс: введение в программирование на PARI/GP»

Подсчет $3543$-й цифры справа десятичной записи числа $2^{999999999}$
? floor(2^(999999999)*10^(-3542)) % 10
%1 = 5
? ##
*** last result computed in 2,559 ms.
?

Меньше 3 секунд. Искомая цифра равна 5.
Стек пришлось увеличить до гигабайта, ну это и немного по теперешним меркам :)


А как стек увеличить?!

 Профиль  
                  
 
 Posted automatically
Сообщение11.08.2021, 00:06 
Супермодератор
Аватара пользователя


09/05/12
24047
Кронштадт
 i  Тема перемещена из форума «Математика (общие вопросы)» в форум «Околонаучный софт»
Причина переноса: это явно сюда.

 Профиль  
                  
 
 Re: Подскажите приложение для вычисления "длинной арифметики"?
Сообщение11.08.2021, 00:29 


05/09/16
9454
uzlprog в сообщении #1528495 писал(а):
А как стек увеличить?!

default(parisizemax,10^9) второй аргумент это максимальный размер стека, в байтах.

-- 11.08.2021, 00:41 --

uzlprog в сообщении #1528493 писал(а):
Но пока не понял как вывести результат возведения в степень целиком,

Несколько миллионов цифр? Шутите? Для сравнения: объем "Войны и мира" меньше миллиона знаков.
uzlprog в сообщении #1528493 писал(а):
как это можно выгрузить в файл. ??

write(filename,{str}*): appends the remaining arguments (same output as print) to filename.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу 1, 2, 3, 4  След.

Модераторы: maxal, Toucan, PAV, Karan, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group