소수 찾기

Ja L·2022년 10월 26일
0

[코테] Concept

목록 보기
2/3

소수 찾기 (Search Prime Number)

def is_prime(k):
	if k==2 or k ==3:
		return True
    if k % 2 == 0 or k < 2:
    	return False
    for i in range(3, int(k**0.5)+1, 2):
    	if k % i == 0:
        	return False
    return True
  

✍🏼 for i in range(3, int(k**0.5)+1,2): 에 대한 설명

3 부터 root(k)+1 까지 2씩 증가하는 값을 i로 받는다.
이유부터 설명하자면, root(k) 전후로 약수 쌍이 대칭이므로 root(k)+1 까지 홀수인 수만 체크하면 된다.
❗️짝수는 모두 2로 나뉘기 때문에 홀수만 체크

e.g.

10의 약수 쌍
(1,10),(2,5),(5,2),(10,1)

root(10)= 3.xx
root(10)을 전후로 약수 쌍이 대칭이다.

100의 약수쌍
(1,100), (2,50), (4,25),(5,20),(10,10),(20,5)...

root(100) = 10
10을 전후로 약수 쌍이 대칭이다.

41의 약수쌍
(1,41), (41,1)

root(41) = 6.xx
root(41)을 기준으로 약수 쌍이 대칭이다.

간단히 생각해서 (n,n) 부터 앞의 n의 값이 뒤의 n의 값을 추월하는 값이 되므로 약수쌍이 중복된다. 따라서 중복된 값을 확인할 필요가 없기때문에 int(root(n))+1 까지의 값만 확인한다.

profile
DB Engineer

0개의 댓글