решето эратосфена, на википедии есть алгоритм.
вот на си
http://pastebin.com/uAyyFcUk
Другие языки программирования и технологии
Приведите алгоритмы нахождения простых чисел в заданном промежутке
Владимир Кунчикалеев
Там вроде проблема. задача нахождение простых чисел само по себе относится не разрешенной так как нет машины тьюринга которая будет выполнять поставленную задача за определенное количество шагов
В общем виде алгоритм для каждого числа можно представить так:
Пусть дан массив «первых простых чисел» {2, 3, 5, 7, 11, …}. (Ну к примеру все простые числа меньше 100 или 1000, которые можно получить с помощью другой простейшей программы и описать в твоей программе как константы или подгрузить из внешнего файла. Всё на твоё усмотрение. )
Тогда любое натуральное число можно назвать простым если выполняются следующие условия:
— это число входит в массив «первых простых»
— это число не делится без остатка на каждое из «первых простых» и на любое нечётное число больше максимального из «первых простых» и не больше квадратного корня из проверяемого числа
Последнее это к примеру [√(12343)] = 111. Это значит если число 12343 не делится ни на одно нечётное число меньше или равно 111 (потому что я отбросил дробную часть) , тогда оно является простым.
Для проверки можно просто посмотреть результат деления на 110, 111 и 112:
12343/110 = 112,2090909091
12343/111 = 111,1981981982
12343/112 = 110,2053571429
К стати: 12343 — простое число.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Алгоритм нахождения простых чисел в заданном промежутке — это применение вышеизложенного алгоритма к каждому числу заданного промежутка.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
P.S. Вышеприведённый алгоритм можно упростить в плане утверждения: «на любое нечётное число» .
Дело в том, что начиная с 5 следующие простые числа находятся только на местах числовой оси, отстоящих попеременно на 2 и 4 значения.
Т. е. : 5 + 2 = 7 — простое
7 + 4 = 11 — простое
11 + 2 = 13 — простое
13 + 4 = 17 — простое
17 + 2 = 19 — простое
19 + 4 = 23 — простое
23 + 2 = 25 — первое непростое число, которое получено по данному утверждению
Доказательство данного утверждения можно построить графически с помощью решета Эратосфена после вычёркивания чётных чисел больше 2 и кратных 3.
Это утверждение может сократить время выполнения алгоритма примерно на 1/3, т. к. операция деления очень затратная по времени.
Пусть дан массив «первых простых чисел» {2, 3, 5, 7, 11, …}. (Ну к примеру все простые числа меньше 100 или 1000, которые можно получить с помощью другой простейшей программы и описать в твоей программе как константы или подгрузить из внешнего файла. Всё на твоё усмотрение. )
Тогда любое натуральное число можно назвать простым если выполняются следующие условия:
— это число входит в массив «первых простых»
— это число не делится без остатка на каждое из «первых простых» и на любое нечётное число больше максимального из «первых простых» и не больше квадратного корня из проверяемого числа
Последнее это к примеру [√(12343)] = 111. Это значит если число 12343 не делится ни на одно нечётное число меньше или равно 111 (потому что я отбросил дробную часть) , тогда оно является простым.
Для проверки можно просто посмотреть результат деления на 110, 111 и 112:
12343/110 = 112,2090909091
12343/111 = 111,1981981982
12343/112 = 110,2053571429
К стати: 12343 — простое число.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Алгоритм нахождения простых чисел в заданном промежутке — это применение вышеизложенного алгоритма к каждому числу заданного промежутка.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
P.S. Вышеприведённый алгоритм можно упростить в плане утверждения: «на любое нечётное число» .
Дело в том, что начиная с 5 следующие простые числа находятся только на местах числовой оси, отстоящих попеременно на 2 и 4 значения.
Т. е. : 5 + 2 = 7 — простое
7 + 4 = 11 — простое
11 + 2 = 13 — простое
13 + 4 = 17 — простое
17 + 2 = 19 — простое
19 + 4 = 23 — простое
23 + 2 = 25 — первое непростое число, которое получено по данному утверждению
Доказательство данного утверждения можно построить графически с помощью решета Эратосфена после вычёркивания чётных чисел больше 2 и кратных 3.
Это утверждение может сократить время выполнения алгоритма примерно на 1/3, т. к. операция деления очень затратная по времени.
Похожие вопросы
- c++ сильно завис алгоритм нахождения простых чисел - пару вопросов ?
- Помогите найти алгоритм вычисления простых чисел
- Программа по нахождению простых чисел от 1 до 100
- Помогите найти, алгоритм нахождения Произведения простых чисел, на С++, или литературу которая поможет разобраться.
- Алгоритмы в паскале. Народ, напишите плиз алгоритм нахождения НОД и алгоритм выделения цифр числа. Заранее благодарю)
- Предложите алгоритм нахождения количества максимальных чисел из трех введенных чисел.
- Помогите пожалуйста! Как Разработать алгоритм нахождения суммы и кол-ва четных чисел натурального ряда, кот. >K, но
- Допустим, есть у меня промежуток от 1 до 10000. Компьютер даёт мне рандомное число из этого промежутка и спрашивает
- Формула нахождения квадрата числа
- Задача по информатике: Найти все простые числа в промежутке от 20 до 70 ? Не могу решить