|
|
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
Существует-ли такой ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 10:37 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
Все в числе, на интервале значений чисел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 10:45 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
qwedfgСуществует-ли такой ? Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 11:00 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
1) Для ограниченного диапазона применяют Решето Эратосфена. (Требует дополнительной памяти в виде битовой карты, соизмеримой с диапазоном). 2) Для монотонной последовательности простых чисел (ППЧ) я писал довольно шустрый алгоритм на С++. Могу поискать, если интересно. Правда он работает в диапазоне 32-разрядных целых. А при переходе в более высокую разрядную сетку нужно скачкообразно менять технологию и поэтому на дальнейшие оптимизации я забил. Вообще, спустя много лет, я понял, что затея с написанием универсального алгоритма генерации последовательности простых чисел - из области поиска "философского камня" . Можно достичь успеха в любых смежных с ней областях (теория чисел, криптография) но сам метод будет всегда в состоянии бета-версии. Кстати, проводить соревнования по скорости числогенерации - бесполезное занятие, поскольку финишная черта - находится в бесконечности, а именно там и проявляют себя основные свойства ППЧ. И алгоритм, который на старте дал приличную скорость, в более серъезном диапазоне может полностью провалится (на радость математикам и в назиданиие любителям кодировать в АСМ-е ). 3) Если нужно просто сгенерировать одно простое число (ОООЧЕНЬ БОЛЬШОЕ), используются генерация случайного числа с проверкой его на простоту специальными быстрыми тестами. Они гарантируют "простоту" с очень высокой вероятностью 99.9999... Этот метод используют в криптографии. ---------------- С уважением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 11:17 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
qwedfgСуществует-ли такой ?один из первых известных - "решето эратосфена" http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%88%D0%B5%D1%82%D0%BE_%D0%AD%D1%80%D0%B0%D1%82%D0%BE%D1%81%D1%84%D0%B5%D0%BD%D0%B0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 11:20 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
qwedfg wrote: > Существует-ли такой ? Да. Поройтесь на википедии и поищите гуглом, я где-то (вроде бы в википедии) видел несколько элегантных алгоритмов, более интересных, чем "решето". К сожалению, найти пока не могу, где это было. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 12:40 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
Для маленьких чисел можно применить табличный метод, используя уже найденные числа :) А если придумать хороший алгоритм, можно неплохо подзаработать ;) так что, автор- дерзай! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 19:56 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
могу дать почту одного человека, он находил простые числа вроде б от 1 до десятков миллионов и довольно быстро. если не ошибаюсь, за час примерно. аффтопитезь: 4 8 15 16 23 42 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2007, 10:36 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
Вот простая генерилка. Не использует дополнительную память. На моём Celeron 1.7 Ghz выдаёт за 5 секунд все числа в диапазоне от 3 до 1000000. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2007, 16:40 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
Если for(int i=2;i<=ub;i++) заменить на for(int i=2;i<=ub;i+=2) То будет уже в два раза шустрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 20:00 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
Для каких целей нужны простые числа автору? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 20:04 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
IcyCoolЕсли for(int i=2;i<=ub;i++) заменить на for(int i=2;i<=ub;i+=2) То будет уже в два раза шустрееТ.е. делимость на 3 предлагате не проверять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 20:55 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
qwedfg wrote: > Существует-ли такой ? Был хороший простой двоичный алгоритм нахождения простых чисел, очень быстрый. Проблема: забыл, где видел и как называется :-( Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 21:31 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
Есть такая теоремка: Пусть Х - тестируемое число. Если A^X mod X = А для всех A = 2 ... X-1, то X - простое. На практике ограничиваются несколькими выборочными проверками, т.к. подобные тесты пропускают мизерный процент "псевдопростых" чисел. Для чисел специального вида существуют хитрые и точные методы. Тут уже нужно подробнее узнать о целях автора! --- Идеи движут Мир! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2007, 14:24 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
Генерируется случайное нечётное большое число и проверятся, например, с помощью вероятностного теста Миллера - Рабина ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 09:21 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
кроме перебора - не существует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 14:30 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
Хитроглазыйкроме перебора - не существует Я - бы не стал торопится с таким заявлением. К примеру, если вам известена монотонная последовательность простых чисел (2,3,5,7,11,13) то найти следующее простое число довольно просто. Можно перемножить числа последовательности и добавить 1. Этот метод - не переборный. Например: 2 * 3 * 5 * 7 * 11 * 13 + 1 = 30031 Это число простое по определению. Правда, этот метод не даёт возможности найти числа в окрестности выше 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 15:01 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
Хитроглазыйкроме перебора - не существует Перебор - самый "тупой" и громоздкий способ. Уже для 100-значных чисел потребовалось бы много машино-лет на перебор всех делителей до 10^50. А рекорд сейчас - 9,808,358 знаков! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 10:18 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
mayton2 * 3 * 5 * 7 * 11 * 13 + 1 = 30031 Это число простое по определению 30031 = 59*509 и ага ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 12:02 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
mayton К примеру, если вам известена монотонная последовательность простых чисел (2,3,5,7,11,13) то найти следующее простое число довольно просто. Можно перемножить числа последовательности и добавить 1. Этот метод - не переборный. Например: 2 * 3 * 5 * 7 * 11 * 13 + 1 = 30031 Это число простое по определению.в формулировке пропущена часть. "пердположим, известны _все_ простые числа..." далее - было бы по тексту. И вообще говоря - это всего лишь фрагмент доказательства бесконечного числа простых чисел. В силу отказа от предположения о конечности и известности алгоритм не верен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 12:36 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
Хитроглазый wrote: > 30031 = 59*509 и ага ;) очевидно, имелось в виду правило Натуральное p > 1 является простым тогда и только тогда, когда (p - 1)! + 1 делится на p Только это тест. А как насчет 2^(2^n)+1 ? и вот: http://www.codenet.ru/progr/alg/Simple-Numbers.php Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 12:39 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
Хитроглазый30031 = 59*509 и ага ;) Верно! Вы меня подловили. Ваш ник вам - соответствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 12:56 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
mayton wrote: > Верно! Вы меня подловили. > > Ваш ник вам - соответствует. Нашел-таки я тот алгоритм, о котором раньше писал. 2^n-1 (http://ru.wikipedia.org/wiki/Число_Мерсенна) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 12:57 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
ErV wrote: > (http://ru.wikipedia.org/wiki/Число_Мерсенна) И довесок. http://ru.wikipedia.org/wiki/Тест_Люка_?_Лемера Млин. это не тот алгоритм... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 12:59 |
|
||
|
Алгоритм нахождения простых чисел
|
|||
|---|---|---|---|
|
#18+
господа кодеры, а для Borland 3.1 можно вас попросить код написать? а то задачку хитрую задали... написать программу нахождения n пар простых чисел разница между которыми равна 2, иначе называемых "близнецами", т.е. 3 и 5, 5 и 7, 11 и 13... как пример... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 23:26 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34628085&tid=1342169]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
187ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
83ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 552ms |

| 0 / 0 |
