2013-04-14 4 views
3

«unsigned long long» может решить до 15 цифр.Квадратный корень из 100-значного числа в C++

Есть ли способ, чтобы найти квадратный-корень 100 значного числа?

+1

Я знаю, что это, вероятно, не то, что вы ищете, но в случае, если вам не нужен точный результат, вы можете просто использовать 'double'. – Detheroc

+2

@Detheroc, что было бы хорошим первым шагом для вычисления реального значения с помощью алгоритма, такого как метод newton. – didierc

ответ

3

Определенно. Одним из простых способов было бы использовать функцию mpz_sqrt() библиотеки многоточечной библиотеки GNU.

3

Этот вопрос разве на самом деле относится к C++, но вот список методов, которые вы можете использовать http://en.wikipedia.org/wiki/Methods_of_computing_square_roots

В зависимости от того, если его домашнее задание или нет, вы можете быть в состоянии использовать Premade LIB для обработки bignums

4

Вы также можете использовать библиотеку Boost.Multiprecision. Эта библиотека предоставляет обертки для некоторых популярных реализаций многоточечной обработки.

#include <iostream> 
#include <string> 
#include <utility> 

#include <boost/multiprecision/mpfr.hpp> 

int main() 
{ 
    std::string s(100, '0'); 
    s.at(0) = '1'; 
    boost::multiprecision::mpfr_float_100 f(std::move(s)); 
    boost::multiprecision::mpfr_float_100 sqrt = boost::multiprecision::sqrt(f); 
    std::cout << sqrt.str() << std::endl; 

    return 0; 
} 
+0

Ничего себе, спасибо! :) – user2278992