Přejít na obsah

Recommended Posts

Odesláno

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

97654000350692006139.

 

 

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

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

 

 

есть идеи?

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

 

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

Odesláno
есть идеи?

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

 

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

 

 

 

Odesláno

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

Odesláno

устроит?

 

echo "sqrt(1522605027922533360535618378132637429718068114961380688657908494580122963258
952897654000350692006139)" | bc
39020571855401265512289573339484371018905006900194

 

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

 

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

 

echo "39020571855401265512289573339484371018905006900194^2" | bc
15226050279225333605356183781326374297180681149613194702138326818464255072074390
21844382752677237636

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

Odesláno

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

Odesláno

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

 

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

Odesláno

Archer, проблема:

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

 

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

 

Odesláno

Есть библиотека 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 интерфейсик к этому вычислению сделать, где можете с разными числами и точностью "поиграться".

Odesláno
Есть библиотека 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 интерфейсик к этому вычислению сделать, где можете с разными числами и точностью "поиграться".

 

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

 

Pokud chcete odpovídat, musíte se přihlásit nebo si vytvořit účet.

Pouze registrovaní uživatelé mohou odpovídat

Vytvořit účet

Vytvořte si nový účet. Je to snadné!

Vytvořit nový účet

Přihlásit se

Máte již účet? Zde se přihlašte.

Přihlásit se


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

    • Žádný registrovaný uživatel si neprohlíží tuto stránku
×
×
  • Vytvořit...