суббота, 31 июля 2010 г.

Библиотека Dlib. Пример использования класса bigint

    Класс bigint позволяет манипулировать с целыми числами без знака, диапазон значений которых ограничивается только доступными ресурсами системы. Есть две реализации больших целых чисел: bigint_kernel_1 и bigint_kernel_2. Единственное отличие bigint_kernel_2, это использование быстрого преобразования Фурье для выполнения операции умножения.

#include <iostream>
#include "../dlib/bigint.h"

typedef dlib::bigint::kernel_2a BigInt;

BigInt factorial(BigInt num);

int main(int ac, char** av)
{
     std::cout << factorial(10000) << std::endl;
     return 0;
}

/*
Для большого значения num лучше использовать один из
алгоритмов приведенных на странице:
http://www.luschny.de/math/factorial/FastFactorialFunctions.htm
*/
BigInt factorial(BigInt num)
{
    BigInt result = 1;
    
    for ( BigInt i=num; 0<i; i-- )
        result *= i;

    return result;
}

Вывод команды ./bigint | wc -m
35672                                                                            

Комментариев нет:

Отправить комментарий