인프런 커뮤니티 질문&답변

임나래님의 프로필 이미지

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

8. 뒤집은 소수

IsPrime 함수에서 for문 범위 질문 드립니다.

작성

·

202

0

 
def isPrime(x):
'''
소수인지 판별하는 함수
'''
if x==1:
return False
for i in range(2,x//2+1):
if x%i==0:
return False
else:
return True
 
위 for문에서 범위가 2부터 x를 2로나눈 몫까지 반복되는데,
예시로 들어주신 16의 경우, i가 2,3,4,5,6,7,8까지 반복문이 돌게 됩니다.
그런데 마지막 8의 경우는 2로 나눴을 때 이미 2*8=16으로 한번 나눠지게 되니
for문에 포함이 안되어도 될 것 같은데 아닌가요?
range의 범위가 range(2,x//2)로 수정되어야 할 것 같은데, 맞는건지 궁금합니다.
 

답변 3

0

사실 루트(x)+1 까지만 돌아도 소수인지 아닌지는 판별 가능합니다. range(2,x//2)를 하든 range(2,x//2+1)을 하든 결과가 같은게 그런 이유 때문이죠.

0

홀수의 경우는 절반까지 돌아야하지 않을까요?

0

range(2,x//2) 하면 x가 16일때 i는 7까지 밖에 안돌아요

혹시 원하는 답변이 아니면 죄송합니다