agata 1 Nahlásit příspěvěk Odesláno December 5, 2015 Столкнулась с "небольшой" проблемой. Предположим есть большое число 15226050279225333605356183781326374297180681149613806886579084945801229632589528 97654000350692006139. Как мне взять из него корень квадратный, чтобы ответ не выдавал это: 3.9020571855401265512289573339484371018905006900 × 10^49 (как на одном онлайн калькуляторе) или это 12339388.266533 (так как 12339388.266533*12339388.266533=1.52260502792252274647840089 × 10^14).....а получить максимально правильный ответ из цифр без всяких дополнительных 10 в любой степени.... то есть если я сделаю обратную операцию и умножу число на само себя, то получу свое изначальное.... есть идеи? я пока не могла ничего найти...как впрочем и не понимаю как написать простой алгоритм именно для такого большого числа..... p.s. может кто-то может за деньги мне написать или пояснить как написать такой квадратнокоренневый калькулятор? Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
Archer 1636 Nahlásit příspěvěk Odesláno December 5, 2015 есть идеи? я пока не могла ничего найти...как впрочем и не понимаю как написать простой алгоритм именно для такого большого числа..... 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 Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
agata 1 Nahlásit příspěvěk Odesláno December 5, 2015 Спасибо. Про сложности читала и библиотеки....над как-то все же мне решить задачку... Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
younghacker 7 Nahlásit příspěvěk Odesláno December 7, 2015 устроит? echo "sqrt(1522605027922533360535618378132637429718068114961380688657908494580122963258 952897654000350692006139)" | bc 39020571855401265512289573339484371018905006900194 Исходники здесь Упс... Не пойдёт. echo "39020571855401265512289573339484371018905006900194^2" | bc 15226050279225333605356183781326374297180681149613194702138326818464255072074390 21844382752677237636 Разбежка начинается после 50-го разряда. Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
Andruxa 945 Nahlásit příspěvěk Odesláno December 7, 2015 Написать программку нет никаких проблем. Алгоритм проходили в школе. Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
agata 1 Nahlásit příspěvěk Odesláno December 7, 2015 Написать програмку проблемы есть, так как с большими числами надо, по идее, делать конвертацию числа....так как домашние компы используют 8 байт максимум для операций с числами. Как понимаю для подобного калькулятора надо использвать длинную арифметику. Пока у меня в голове картинки нет как это сделать. Не хватает знаний.А онлайн посчиать почти не реально, даже на таком онлайн ресурсе как http://www.wolframalpha.com/. Например, если число больше указанного, то уже идут глюки. Да и указанное число отчасти глючит. Завтра попробую поиграться дальше. Но, есть у меня ощущение, что буду искать програмиста для написания калькулятора (плюс, минус, умножить, разделить, степень 2 и корень квадратный)..... Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
Archer 1636 Nahlásit příspěvěk Odesláno December 7, 2015 Что-то я не понимаю. В чём вопрос? Надо пользоваться? Так уже показали, что калькулятор bc (для командной строки юникса или линукса) это умеет. Или на Python можно считать, он под любую платформу есть. Или непременно надо самой алгоритм написать, исходя из того, что язык программирования ограничен 8 байтами? Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
agata 1 Nahlásit příspěvěk Odesláno December 8, 2015 Archer, проблема: Упс... Не пойдёт.....Разбежка начинается после 50-го разряда. Вечером вчера-сегодня тестирую существующие варианты, чтобы понять стоит ли "выдумывать велосипед" (брать программера) или обойдусь тем, что есть. Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
drud 0 Nahlásit příspěvěk Odesláno December 8, 2015 Есть библиотека 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 интерфейсик к этому вычислению сделать, где можете с разными числами и точностью "поиграться". Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
agata 1 Nahlásit příspěvěk Odesláno December 8, 2015 Есть библиотека 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 интерфейсик к этому вычислению сделать, где можете с разными числами и точностью "поиграться". Очень хочу и буду признательна! Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
drud 0 Nahlásit příspěvěk Odesláno December 8, 2015 Отправил вам ссылку в личку Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
agata 1 Nahlásit příspěvěk Odesláno December 8, 2015 Огромнейшее спасибо=) Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky