agata

калькулятор он лайн или прога

Recommended Posts

Столкнулась с "небольшой" проблемой. Предположим есть большое число 15226050279225333605356183781326374297180681149613806886579084945801229632589528

97654000350692006139.

 

 

Как мне взять из него корень квадратный, чтобы ответ не выдавал это: 3.9020571855401265512289573339484371018905006900 × 10^49 (как на одном онлайн калькуляторе) или это 12339388.266533 (так как 12339388.266533*12339388.266533=1.52260502792252274647840089 × 10^14).....а получить максимально правильный ответ из цифр без всяких дополнительных 10 в любой степени....

то есть если я сделаю обратную операцию и умножу число на само себя, то получу свое изначальное....

 

 

есть идеи?

я пока не могла ничего найти...как впрочем и не понимаю как написать простой алгоритм именно для такого большого числа.....

 

p.s. может кто-то может за деньги мне написать или пояснить как написать такой квадратнокоренневый калькулятор?

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky
есть идеи?

я пока не могла ничего найти...как впрочем и не понимаю как написать простой алгоритм именно для такого большого числа.....

 

Wiki (сложно там всё...)

https://ru.wikipedia.org/wiki/%D0%94%D0%BB%....80.D0.BD.D1.8F

 

В каких языках есть реализация

http://ru.stackoverflow.com/questions/4084...%B0%D0%BC%D0%B8

 

 

 

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

Спасибо. Про сложности читала и библиотеки....над как-то все же мне решить задачку...

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

устроит?

 

echo "sqrt(1522605027922533360535618378132637429718068114961380688657908494580122963258
952897654000350692006139)" | bc
39020571855401265512289573339484371018905006900194

 

Исходники здесь

 

Упс... Не пойдёт.

 

echo "39020571855401265512289573339484371018905006900194^2" | bc
15226050279225333605356183781326374297180681149613194702138326818464255072074390
21844382752677237636

Разбежка начинается после 50-го разряда.

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

Написать программку нет никаких проблем. Алгоритм проходили в школе.

 

Zccn0.png

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

Написать програмку проблемы есть, так как с большими числами надо, по идее, делать конвертацию числа....так как домашние компы используют 8 байт максимум для операций с числами. Как понимаю для подобного калькулятора надо использвать длинную арифметику. Пока у меня в голове картинки нет как это сделать. Не хватает знаний.А онлайн посчиать почти не реально, даже на таком онлайн ресурсе как http://www.wolframalpha.com/. Например, если число больше указанного, то уже идут глюки. Да и указанное число отчасти глючит. Завтра попробую поиграться дальше. Но, есть у меня ощущение, что буду искать програмиста для написания калькулятора (плюс, минус, умножить, разделить, степень 2 и корень квадратный).....

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

Что-то я не понимаю. В чём вопрос? Надо пользоваться? Так уже показали, что калькулятор bc (для командной строки юникса или линукса) это умеет. Или на Python можно считать, он под любую платформу есть.

 

Или непременно надо самой алгоритм написать, исходя из того, что язык программирования ограничен 8 байтами?

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

Archer, проблема:

Упс... Не пойдёт.....Разбежка начинается после 50-го разряда.

 

Вечером вчера-сегодня тестирую существующие варианты, чтобы понять стоит ли "выдумывать велосипед" (брать программера) или обойдусь тем, что есть.

 

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

Есть библиотека gmpy2 специально для работы с очень большими числами.

 

import gmpy2

n = gmpy2.mpz(1522605027922533360535618378132637429718068114961380688657908494580122963258
952897654000350692006139)
gmpy2.get_context().precision=2048
x = gmpy2.sqrt(n)
print "Initial:", n
print "Result:", x
print "Check:", x * x

 

Дает следующий результат:

 

Initial: 15226050279225333605356183781326374297180681149613806886579084945801229632589528

97654000350692006139

Result: 39020571855401265512289573339484371018905006900194.7844380 ... многацифр ...

Check: 15226050279225333605356183781326374297180681149613806886579084945801229632589528

97654000350692006139.0

 

P.S. есть еще просто gmpy, но у нее sqrt целый результат возвращает, а вам, я так понимаю, наибольшая точность нужна.

 

P.P.S. если хотите, могу вам web интерфейсик к этому вычислению сделать, где можете с разными числами и точностью "поиграться".

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky
Есть библиотека gmpy2 специально для работы с очень большими числами.

 

import gmpy2

n = gmpy2.mpz(1522605027922533360535618378132637429718068114961380688657908494580122963258
952897654000350692006139)
gmpy2.get_context().precision=2048
x = gmpy2.sqrt(n)
print "Initial:", n
print "Result:", x
print "Check:", x * x

 

Дает следующий результат:

 

 

 

P.S. есть еще просто gmpy, но у нее sqrt целый результат возвращает, а вам, я так понимаю, наибольшая точность нужна.

 

P.P.S. если хотите, могу вам web интерфейсик к этому вычислению сделать, где можете с разными числами и точностью "поиграться".

 

Очень хочу и буду признательна!

 

Sdílet tento příspěvek


Odkaz na příspěvek
Sdílet na ostatní stránky

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Odpovědět na toto téma...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




  • Kdo si právě prohlíží tuto stránku

    Žádný registrovaný uživatel si neprohlíží tuto stránku