Играясь с задачами в projecteuler, для нескольких задач потребовался функционал работы с длинными числами. В частности, последняя на момент написания этой заметки задача 25 звучала как "Какой первый номер элемента последовательности фибоначчи, имеющий 1000 цифр?".
Все задачи я решал на C++. Чтобы можно было работать с длинной арифметикой, разработал класс pdaLongNum.
На данный момент мне требовалось только несколько операций:
pdaLongNum & operator=(pdaLongNum const & aOther);
pdaLongNum & operator+=(pdaLongNum const & aSummand);
pdaLongNum & operator*=(pdaLongNum const & aFactor);
unsigned int countDigits();
unsigned int countBlocks();
const string toString();
const unsigned long toLong();
const unsigned int toInt();
Файл исходника с заголовком можно скачать из списка ниже.