397 подписчиков

Решение 7 задачи проекта Эйлера: 10001-е простое число

Для программы использовал "продвинутый" алгоритм, придуманный ранее для третьей задачи Эйлера. Сразу получил высокую скорость вычисления.

Условия задачи

"Выписав первые шесть простых чисел, получим 2, 3, 5, 7, 11 и 13. Очевидно, что 6-е простое число - 13.

Какое число является 10001-м простым числом?"

Функция, определяющая, является ли число простым

Функция, определяющая, является ли число простым (задача Эйлера #7)
Функция, определяющая, является ли число простым (задача Эйлера #7)

Для удобства работы в программе использовал библиотеки <stdbool.h> и <math.h>, подробнее об их использовании уже писал ранее.

Простые числа, как следуют из их определения, делятся только на 1 и на самих себя. Однако при проверке числа, как ранее уже писал, нет необходимости в знаменателе перебирать все числа вплоть до проверяемого, достаточно проверить ряд чисел от 2 до квадратного корня из проверяемого числа.

Сама программа для поиска искомого простого числа

Решаем задачу Эйлера 7
Решаем задачу Эйлера 7

Программа несложная, просто в цикле while() перебираются все натуральные числа. В функции isSimpleNum() каждое число проверяется и если оно является простым, то увеличивается значение счетчика count. Как только искомое простое число (10001-е) найдено, цикл заканчивается и выводится ответ.

Ответ на задачу:

Скорость работы программы 0.3 - 0.4 секунды, что довольно быстро.

P.S. Изначальная цель блога - получить "фидбек" в комментариях, чтобы более опытные "кодеры" указывали мне на ошибки, советовали и всячески помогали в саморазвитии.

Также приглашаю всех на мой сайт)

На нем Вы можете посмотреть ответ на задачу Эйлера #7 (когда необходима лишь небольшая подсказка) и последний, самый быстрый вариант решения.

Настоятельно так рекомендую... не забыть подписаться)
Настоятельно так рекомендую... не забыть подписаться)

В общем, добро пожаловать на канал))