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로 나뉘기 때문에 홀수만 체크
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)을 기준으로 약수 쌍이 대칭이다.