Для программы использовал "продвинутый" алгоритм, придуманный ранее для третьей задачи Эйлера. Сразу получил высокую скорость вычисления.
Условия задачи
"Выписав первые шесть простых чисел, получим 2, 3, 5, 7, 11 и 13. Очевидно, что 6-е простое число - 13.
Какое число является 10001-м простым числом?"
Функция, определяющая, является ли число простым
Для удобства работы в программе использовал библиотеки <stdbool.h> и <math.h>, подробнее об их использовании уже писал ранее.
Простые числа, как следуют из их определения, делятся только на 1 и на самих себя. Однако при проверке числа, как ранее уже писал, нет необходимости в знаменателе перебирать все числа вплоть до проверяемого, достаточно проверить ряд чисел от 2 до квадратного корня из проверяемого числа.
Сама программа для поиска искомого простого числа
Программа несложная, просто в цикле while() перебираются все натуральные числа. В функции isSimpleNum() каждое число проверяется и если оно является простым, то увеличивается значение счетчика count. Как только искомое простое число (10001-е) найдено, цикл заканчивается и выводится ответ.
Ответ на задачу:
Скорость работы программы 0.3 - 0.4 секунды, что довольно быстро.
P.S. Изначальная цель блога - получить "фидбек" в комментариях, чтобы более опытные "кодеры" указывали мне на ошибки, советовали и всячески помогали в саморазвитии.
Также приглашаю всех на мой сайт)
На нем Вы можете посмотреть ответ на задачу Эйлера #7 (когда необходима лишь небольшая подсказка) и последний, самый быстрый вариант решения.
В общем, добро пожаловать на канал))