Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 Быстрая проверка небольших чисел на простоту на экзамене
Аватара пользователя
Приведите пример способа быстрого нахождения простых чисел на определенном отрезке.
Лично я знаю несколько (в основном, все работают по принципу "решета" ), но все они занимают довольно много времени.

 
Аватара пользователя
Сначала решето, чтобы отсеять числа с маленькими простыми делителями, а затем перебор отставшихся с каким-нибудь быстрым вероятностным тестом простоты типа Миллера-Рабина.

 
Аватара пользователя
Сейчас кое-что почитал про этот тест :!: По-моему, он займет больше времени, чем простое деление всех сомнительных чисел. Конечно, если числа очень большие, то понятно - он полезен, но если числа, ну скажем, трехзначные, то - довольно сложный.

 
Аватара пользователя
:evil:
А с трех- четырехзначными проще всего проверить в таблице (вбитой в программу).

 
Аватара пользователя
По какой таблице? На экзамене же ничего не будет! :wink:

 
Аватара пользователя
Это на каком, интересно, экзамене, просят найти все простые числа на некотором отрезке?

 
Аватара пользователя
вступительный в ГУ-ВШЭ

 
Аватара пользователя
И какого типа отрезок (порядок)?

 
Аватара пользователя
задание такое: Сколько простых чисел расположено в промежутке (84; 102)
Понятно: задание несложное при наличии времени, но его как раз-таки и не хватает! Я просто хочу найти такой способ, чтобы не вычислять каждое простое число, а сразу находить их количество.

 
Аватара пользователя
Ну, это явно методом решета надо делать, даже проще. Выписать все числа из промежутка, можно сразу опускать те, которые явно не простые (сразу виден делитель). Далее, надо использовать простой факт, что если число $x$ имеет делители, то хотя бы один из них не превосходит $\sqrt{x}$. А значит, в данном случае надо проверить только делимость на простые числа до 10.

 
Здесь подойдет обычный метод решета. Вычеркиваем все чётные, потом делящиеся на три, на пять и на семь. Оставшиеся простые - 83, 89, 97.

 
Аватара пользователя
Это именно для данного случая? Как я понял, то если числа находятся в пределах ста, то корень из ста будет 10, значит остается проверить все числа до 10?

 
AchilleS писал(а):
Это именно для данного случая? Как я понял, то если числа находятся в пределах ста, то корень из ста будет 10, значит остается проверить все числа до 10?

Проверить на простые меньше 10.

 
Аватара пользователя
Именно. А другого способа нет. В основном остается проверить 7-9 чисел в аналогичных заданиях - это отнимает около 5-7 минут. А там счет идет чуть ли не на секунды.

 
Когда числа в пределах 100000, лучшего алгоритма нет. Все мудрёные алгоритмы более экономны при проверке больших чисел на простоту. Конечно для специального вида чисел есть алгоритмы апроверки на простоту специально для таких чисел.

 [ Сообщений: 16 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group