Почему мы проверяем квадратный корень простого числа, чтобы определить, является ли оно простым?

Чтобы проверить, является ли число простым или нет, почему мы должны проверить, является ли он делимым только до квадратного корня из этого числа?

Ответ 1

Если число n не является простым, оно может быть разделено на два фактора a и b:

n = a * b

Если бы и a и b были больше квадратного корня из n, то a * b было бы больше, чем n. Таким образом, хотя бы один из этих факторов должен быть меньше или равен квадратному корню из n, и если мы не можем найти какие-либо факторы, меньшие или равные квадратному корню, n должно быть простым.

Ответ 2

Пусть, скажем, m = sqrt(n) тогда m × m = n. Теперь, если n не простое число, то n можно записать как n = a × b, поэтому m × m = a × b. Обратите внимание, что m - действительное число, тогда как n, a и b - натуральные числа.

Сейчас может быть 3 случая:

  1. а> м ⇒ б <м
  2. a = m ⇒ b = m
  3. <м ⇒ б> м

Во всех 3 случаях min(a, b) ≤ m. Следовательно, если мы будем искать до m, мы обязательно найдем хотя бы один фактор n, которого достаточно, чтобы показать, что n не простое число.

Ответ 3

Поскольку, если множитель больше квадратного корня из n, другой фактор, который умножается на него равным n, обязательно меньше квадратного корня из n.

Ответ 4

Более интуитивное объяснение будет: -

Квадратный корень из 100 равен 10. Скажем, x b = 100 для различных пар a и b.

Если a == b, то они равны и равны квадратному корню из 100. Это 10.

Если одно из них меньше 10, другое должно быть больше. Например, 5 x 20 == 100. Один больше 10, другой меньше 10.

Думая о x b, если один из них опускается, другой должен получить больше, чтобы компенсировать, поэтому продукт остается равным 100. Они поворачиваются вокруг квадратного корня.

Квадратный корень 101 составляет около 10.049875621. Поэтому, если вы тестируете номер 101 для простоты, вам нужно всего лишь попробовать целые числа до 10, в том числе 10. Но 8, 9 и 10 не являются самими собой, поэтому вам нужно пройти тест через 7, что простое число.

Потому что, если существует пара факторов с одним из чисел больше 10, другая пара должна быть меньше 10. Если меньшая не существует, то не будет соответствующего более крупного коэффициента 101.

Если вы тестируете 121, квадратный корень равен 11. Вам нужно проверить первичные целые числа от 1 до 11 (включительно), чтобы проверить, равномерна ли она. 11 идет в 11 раз, поэтому 121 не является простым. Если вы остановились на 10 и не протестировали 11, вы пропустили бы 11.

Вам нужно проверить каждое первичное целое число больше 2, но меньше или равно квадратному корню, если вы проверяете только нечетные числа.

`

Ответ 5

Предположим, что n не является простым числом (больше 1). Таким образом, существуют числа a и b такие, что

n = ab      (1 < a <= b < n)

Перемножая соотношение a<=b на a и b, получим:

a^2 <= ab
 ab <= b^2

Поэтому: (заметим, что n=ab)

a^2 <= n <= b^2

Отсюда: (Заметим, что a и b положительны)

a <= sqrt(n) <= b

Итак, если число (больше 1) не является простым и мы проверяем делимость до квадратного корня из числа, мы найдем один из факторов.

Ответ 6

Все это на самом деле просто базовое использование факторизации и квадратных корней.

Это может показаться абстрактным, но на самом деле это просто связано с тем, что максимально возможный факториал без первичного числа должен был бы быть его квадратным корнем, потому что:

sqrroot(n) * sqrroot(n) = n.

Учитывая, что если любое целое число выше 1 и ниже или до sqrroot(n) равномерно делит на n, то n не может быть простым числом.

Пример псевдокода:

i = 2;

is_prime = true;

while loop (i <= sqrroot(n))
{
  if (n % i == 0)
  {
    is_prime = false;
    exit while;
  }
  ++i;
}

Ответ 7

Предположим, что заданное целое число N не является простым,

Тогда N можно разложить на два фактора a и b, 2 <= a, b < N таких, что N = a*b. Очевидно, что оба они не могут быть больше, чем sqrt(N) одновременно.

Предположим без ограничения общности, что a меньше.

Теперь, если вы не смогли найти какой-либо делитель N, принадлежащий к диапазону [2, sqrt(N)], что это значит?

Это означает, что N не имеет никакого делителя в [2, a] как a <= sqrt(N).

Следовательно, a = 1 и b = n и, следовательно, По определению N является простым.

...

Дальнейшее чтение, если вы не удовлетворены:

Возможно много разных комбинаций (a, b). Скажем, что они:

(a 1, b 1), (a 2, b 2), (a 3, b 3),....., (a k, b k). Без ограничения общности предположим, что i b i, 1<= i <=k.

Теперь, чтобы показать, что N не является простым, достаточно показать, что ни один из i не может быть факторизован далее. И мы также знаем, что i <= sqrt(N) и, следовательно, вам нужно проверить до sqrt(N), который будет охватывать все i. И, следовательно, вы сможете заключить, является ли N простым.

...

Ответ 8

Итак, чтобы проверить, является ли число N Prime или нет. Нам нужно только проверить, является ли N делящимся на числа &lt = SQROOT (N). Это связано с тем, что если мы запишем N в любые 2 фактора, то скажем X и Y, т.е. N = XY. Каждый из X и Y не может быть меньше, чем SQROOT (N), потому что тогда XY < N Каждый из X и Y не может быть больше SQROOT (N), потому что тогда X * Y > N

Поэтому один фактор должен быть меньше или равен SQROOT (N) (в то время как другой коэффициент больше или равен SQROOT (N)). Поэтому, чтобы проверить, является ли N Prime, нам нужно только проверить эти числа <= SQROOT (N).

Ответ 9

Скажем, у нас есть число "а", которое не является простым (не простое/составное число означает - число, которое можно равномерно разделять цифрами, отличными от 1 или самого себя). Например, 6 можно равномерно распределить на 2 или на 3, а также на 1 или 6].

6 = 1 × 6 или 6 = 2 × 3

Итак, теперь, если "a" не является простым, тогда его можно разделить на два других числа, и пусть эти числа "b" и "c". Что означает

а = Ь * с.

Теперь, если "b" или "c", любое из них больше квадратного корня из "a", чем умножение "b" и "c" будет больше, чем "a".

Итак, "b" и "c" всегда <= квадратный корень из "a", чтобы доказать уравнение "a = b * c".

Из-за вышеприведенной причины, когда мы проверяем, является ли число простым или нет, мы проверяем только квадратный корень из этого числа.

Ответ 10

Пусть n нечетное. Следовательно, он имеет по крайней мере два целочисленных множителя, больше 1. Пусть f - наименьшее из n таких факторов. Предположим f > sqrt n. Тогда n/f является целым числом LTE sqrt n, что меньше f. Поэтому f не может быть n наименьшим фактором. Reductio ad absurdum; n наименьший фактор должен быть LTE sqrt n.

Ответ 11

Для любого числа n одним из способов найти его множители является получение квадратного корня p:

sqrt(n) = p

Конечно, если мы умножим p на себя, то получим n:

p*p = n

Это может быть переписано как:

a*b = n

Где p = a = b. Если a увеличивается, то b уменьшается, чтобы поддерживать a*b = n. Следовательно, p - верхний предел.

Ответ 12

Чтобы проверить правильность числа n, можно было бы ожидать, например, следующего цикла:

bool isPrime = true;
for(int i = 2; i < n; i++){
    if(n%i == 0){
        isPrime = false;
        break;
    }
}

То, что делает вышеприведенный цикл, таково: для данного 1 < я < n, он проверяет, является ли n/i целочисленным (оставляет остаток 0). Если существует i, для которого n/i - целое число, то мы можем быть уверены, что n не является простым числом, в котором точка цикла завершается. Если для no i, n/i - целое число, то n является простым.

Как и в каждом алгоритме, мы спрашиваем: Можем ли мы сделать лучше?

Посмотрим, что происходит в этом цикле.

Последовательность я идет: я = 2, 3, 4,..., n-1

И последовательность целых проверок: j = n/i, которая равна n/2, n/3, n/4,..., n/(n-1)

Если для некоторого я = a, n/a является целым числом, то n/a = k (целое число)

или n = ak, очевидно, n > k > 1 (если k = 1, то a = n, но я никогда не достигает n; и если k = n, то a = 1, но я начинает форму 2)

Кроме того, n/k = a, и, как указано выше, a является значением i, так что n > a > 1.

Итак, a и k являются целыми числами от 1 до n (исключение). Так как я достигает каждого целого в этом диапазоне, на некоторой итерации я = a и на некоторой другой итерации я = k. Если тест примитивности n завершится с ошибкой для min (a, k), он также потерпит неудачу при max (a, k). Поэтому нам нужно проверить только один из этих двух случаев, если только min (a, k) = max (a, k) (где две проверки сводятся к одному), т.е. A = k, в котором точка a * a = n, которая подразумевается a = sqrt (n).

Другими словами, если тест примитивности n был сбой для некоторого я >= sqrt (n) (т.е. max (a, k)), то он также потерпел бы неудачу для некоторого я <= n (т.е., min (a, k)). Таким образом, было бы достаточно, если бы мы выполнили тест для я = 2 до sqrt (n).

Ответ 13

Любое составное число является произведением простых чисел.

Пусть, скажем, n = p1 * p2, где p2 > p1 и они простые числа.

Если n % p1 === 0 то n является составным числом.

Если n % p2 === 0 то угадайте, что также n % p1 === 0 !

Так что нет никакого способа, чтобы, если n % p2 === 0 но n % p1 !== 0 одновременно. Другими словами, если составное число n может быть разделено равномерно на p2, p3... pi (его больший коэффициент), оно также должно быть разделено на его самый низкий коэффициент p1. Оказывается, что самый низкий коэффициент p1 <= Math.square(n) всегда верен.