В случае данного алгоритма предпочтительнее использовать реализацию на Python, так как реализация на C++ является ненадежной из-за ограничений на типы данных. Во время работы программы возможно появление очень больших чисел, которые не сможет хранить не один тип данных (решением является реализация, к примеру, длинной арифметики или иных обходных путей).
Про тест простоты Ферма можно прочитать в Википедии.