• Поиск простых больших чисел на C# BigInteger?

    @tomatho
    Слишком большие числа для таких алгоритмов. Эти алгоритмы слишком медленные.
    Другими словами, мой ответ такой: Этот код работает, просто вам не хватит терпения дождаться его завершения.
    Update: modulo, modulo1. Что в оригинальном алгоритме, что в итоге - несёт какую-то бессмыслицу.

    Чтобы улучшить скорость, используйте вместо BigInteger обычный long.
    Этот тип позволит поддерживать числа до 9223372036854775807.
    А это число существенно больше тех чисел, которые можно проверить на простоту приведёнными выше алгоритмами, за разумное время.

    Что касается скоростных тестов на простоту, то можете реализовать тест Рабина-Миллера.
    Он сравнительно прост, и очень эффективен. Проблема его лишь в том, что он отвечает:
    "Это число простое с вероятностью 99.9999%"
    Зато вероятность эта может быть выбрана произвольно высоко.
    Например, он может ошибаться в среднем в одном случае из миллиона.

    Что касается точных проверок на простоту, такие реализовать сложнее.
    И я не думаю что у вас стоит такая задача.
    Ответ написан
    1 комментарий