Чтобы найти, является ли N простым числом, нам нужно искать только числа, меньшие или равные sqrt (N). Почему это? Я пишу код C, пытаясь понять причину этого.Найдите простое число?
ответ
N является простым, если оно является положительным целым числом, которое делится ровно два положительными целыми числами, 1 и N. Так как делители целого ряда не может быть больше, чем это число, это приводит к простому тесту на простоту:
- Если целое число N, большее 1, не делится никаким целым числом в диапазоне
[2, N-1]
, тогда N является простым. В противном случае N не является простым.
Однако было бы неплохо изменить этот тест, чтобы сделать его быстрее. Итак, давайте расследуем.
Обратите внимание, что делители N встречаются попарно. Если N делится на число M, то оно также делится на N/M. Например, 12 делится на 6, а также на 2. Кроме того, если M >= sqrt(N)
, то N/M <= sqrt(N)
.
Это означает, что если числа, меньшие или равные sqrt (N), не делят N, числа, большие, чем sqrt (N), не делят N ни (кроме 1 и N), в противном случае возникло бы противоречие.
Итак, мы имеем лучшее испытание:
- Если целое число N, больше, чем 1, не делится на любое целое число в диапазоне
[2, sqrt(N)]
, то N является простым. В противном случае N не является простым.
Если вы считаете, что рассуждение выше, вы должны увидеть, что число, которое проходит этот тест, также проходит первый тест, а число, которое выходит из строя, также не дает первого теста. Поэтому тесты являются эквивалентными.
, пожалуйста, покажите, мы понятия не имеем .... – vehomzzz
Совокупное число (одно, которое не является простым или 1) имеет не менее 1 пары факторов, и гарантируется, что одно из чисел из каждой пары меньше или равно квадратному корню из числа (о чем вы спрашиваете).
Если вы нажмете квадратный корень номера, вы получите номер (sqrt(n) * sqrt(n) = n
), поэтому, если вы сделали один из чисел больше (чем), вам нужно было бы сделать другое меньшим. Если вы только проверите номера с 2 по sqrt(n)
, вы проверите все возможные факторы, так как каждый из этих факторов будет сопряжен с числом, которое больше sqrt(n)
(за исключением, конечно, если число фактически является квадратом некоторых другое число, например 4, 9, 16 и т. д., но это не имеет значения, поскольку вы знаете, что они не простые, они легко учитываются самим sqrt(n)
).
Потому что в худшем случае номер n
может быть представлен как .
Если число может быть выражено разным, то мужчины, что один из делителей будет меньше a = sqrt(n)
, а другой может быть больше.
Причина проста, любое число, большее, чем sqrt, приведет к тому, что другой множитель будет меньше, чем sqrt. В таком случае вы должны это проверить.
Пусть п = × б быть составным.
Предположим > SQRT (п) и б> SQRT (п).
× б> SQRT (п) × SQRT (п)
× б>п
Но мы знаем, × b = n, поэтому < SQRT (п) или б < SQRT (п).
Так как вам нужно знать только или б показать п составной, вам нужно только проверить номера до SQRT (п), чтобы найти такое число.
- 1. Найти nth простое число
- 2. Lisp - простое число
- 3. Следующее простое число алгоритм
- 4. Простое число под номером
- 5. многопоточного генератора простое число
- 6. Haskell сито простое число
- 7. Случайное простое число
- 8. Простое число слов ввода
- 9. Найдите число непересекающихся множеств
- 10. код, который проверяет, если число простое число
- 11. простое число n-я длина
- 12. найти простое число в Java
- 13. Проверить простое число в массиве
- 14. Haskell ошибка генератора простое число
- 15. Найти простое число в C#
- 16. Случайное простое число в python
- 17. 4 нить найти простое число
- 18. Найти простое число с циклами
- 19. простое число питон для петель
- 20. nth простое число в swift
- 21. Найдите недостающее число в списке
- 22. Код python пытается найти простое число. Код подсчитывает не простое число. Не могу найти почему
- 23. Как определить число и определить, имеет ли его простое число
- 24. Как определить большое простое число в R?
- 25. простое число с суммой и тремя циклами
- 26. Распечатайте простое число меньше заданного числа N
- 27. простое число принимает 0 аргументов выпуск
- 28. Compute следующее простое число в Haskell
- 29. Как узнать, сколько раз происходит простое число?
- 30. C: Как получить 4096-битное простое число?
Не связано программирование – ChssPly76
@ ChssPly76: Я думаю, что это полностью правильный запрос алгоритмов. – Artelius
Хм ... Я пишу код, чтобы реализовать это. Как это не программирование? – vehomzzz