• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

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

22.05.04 15:33 작성 조회수 118

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

보이지않는손님의 프로필

보이지않는손

2023.10.09

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

0

DEVEVE님의 프로필

DEVEVE

2022.06.25

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

0

강지훈님의 프로필

강지훈

2022.05.05

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

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