2016-09-10 3 views
0

숫자가 소수인지 아닌지 확인하려면 순진한 방법은 숫자를 2에서 n으로 나누고 나머지가 0으로 표시되면 주어진 숫자는 소수가 아닙니다. 그러나 n/2까지만 나누고 확인하는 것이 가장 좋습니다 (훨씬 더 좋은 방법은 sqrt (n)까지 인식됩니다), 나는 후반을 건너 뛰는 이유를 알고 싶습니다. 우리는 우리의도에 11/6 또는 11/7 또는 11/8 또는 9분의 11 또는 11/10을 할 경우 11/2 = 5 , 숫자 11은 소수인지 아닌지를 확인해야하는 경우숫자를 찾는 것은 소수입니다. 왜 n/2가 더 좋은지 확인하는 것이 좋습니다. n의 후반에 숫자를 피하는 이유는 무엇입니까

말 이 경우 우리는 나머지를 0으로 얻습니다. 어떤 주어진 숫자 n도 마찬가지입니다.

하반기를 피하는 이유는 무엇입니까? "지정된 숫자를 주어진 숫자의 절반 이상으로 나눌 경우 나머지 숫자는 0이되지 않습니다. 즉, 지정된 숫자의 절반보다 큰 숫자는 주어진 숫자를 나눌 수 없습니다."

제발 나를 도와주세요

+1

사실, 당신은 후반 이상으로 벗어날 수 있습니다. :) 그러나 숫자 x가 있다고 상상해보십시오. 2, 3, ..., x/2로 나눌 수 있습니다. 1과 x를 고려하지 않는다면 그게 전부입니다. 'x = y * 0' <=>'x = y * z'인데,'y> x/2' =>'z <2'를 취하면 유일한 정수'0

+0

네가 맞습니다. 숫자의 근원이 충분하다고 말할 수도 있습니다. –

+0

SQRT (n) beacause 이후에 체크 포인트가 없습니다. 그 범위의 숫자가 n으로 나뉘면 나머지는 SQRT (n)보다 작을 것이고 이미 점검되었을 것입니다. – Fruitbat

답변

3

왜냐하면 소수가 소수가되지 않기 때문에 2입니다. 당신이 0에서 n/2까지 모든 숫자를 확인했다면, 작동 할 수있는 몇 배가 남았습니까? 2를 곱하면 n보다 크면 3 또는 4 등의 배수가 n보다 커집니다.

그래서 가장 큰 요인 또는 숫자 N이어야합니다 < = N/

2 그래서 네 N/2를 가지고 가고, N/2에 대한 모든 정수가 작거나 같아야 확인합니다. 당신은 5.5 이상의 모든 정수가 작은 확인할 것 (11)에 대한 그래서 즉 1, 2, 3, 4, 제곱근 여기에 설명 5.

: Why do we check up to the square root of a prime number to determine if it is prime?

그리고이 질문은 이전에 요청하고있다.

+0

감사합니다 @ 폴드 실제로 제곱근 링크를 통과했지만이 질문은 n/2보다 큰 숫자를 건너 뛰는 이유를 아는 것이 었습니다 .. 그리고 대답했습니다. :) –

1

숫자를 줄이려면 n 두 개의 다른 정수로 나누어야합니다 (ab). 두 숫자가 모두 2 이상이어야하므로 n/2보다 큰 숫자를 확인하는 것은 의미가 없으므로 균등하게 나눌 수 없습니다.

그리고 a이 sqrt (n)보다 큰 경우 b이 더 작아야하며 이미 확인 했으므로 sqrt (n)가 더 효율적입니다.