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
9145
Цюрих
В такой формулировке - просто интерпретатор 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
1797
Математические пакеты вроде 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
12058
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
4292
Аделаида
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
12058
mihaild в сообщении #1528470 писал(а):
На моей машине $2^{12345678}$ считается за 50 секунд (и получается 3716421 разрядов).

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

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


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

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


05/09/16
12058
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
9145
Цюрих
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
25179
 i  Тема перемещена из форума «Математика (общие вопросы)» в форум «Околонаучный софт»
Причина переноса: это явно сюда.

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


05/09/16
12058
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  След.

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



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

Сейчас этот форум просматривают: DariaRychenkova


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

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