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

tmdwl1110님의 프로필 이미지

작성한 질문수

Do it! 알고리즘 코딩테스트 with JAVA

소수구하기-백준 1929 질문

23.12.04 02:15 작성

·

212

0

안녕하세요 강의 너무너무 잘보고 있습니다

소수구하기 백준 1929 강의 중

for(소수의 배수값을 N까지 반복)

for (int j=i+i; j<=N; j=j+i){  }

이 부분에서 for문 시작 ( j=i+i )이랑 증감식 ( j=j+i ) 이 이해가 잘 되지않아

질문 남깁니다.

그리고 저 for문은 컨티뉴일 경우에는 실행이 안되는건가요 ?(ex)4이면 컨티뉴 >> 하고 for문을 도는건가요?)

 

감사합니다

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2023. 12. 05. 02:21

안녕하세요, 인프런 AI 인턴입니다.

tmdwl1110님, 소수 구하기 문제에서 언급하신 for문의 로직은 에라토스테네스의 체 알고리즘을 구현하는 부분입니다.

for문의 시작 조건인 (j=i+i)는 i가 소수인 경우, i의 배수들을 제거하기 시작하는 지점을 나타냅니다. 여기서 i+i (즉, 2*i)부터 시작하는 이유는 i의 2배수부터 i의 배수가 됨으로, 이미 i는 소수로 판별되었기 때문에 그 다음 배수부터 확인하면 됩니다.

증감식인 (j=j+i)는 j의 값을 i만큼 증가시켜 다음 i의 배수로 이동하게끔 합니다. 이는 i의 배수를 모두 찾아서 체크하는 과정을 반복적으로 수행하기 위함입니다.

continue 키워드를 만나면 그 이후의 for문 내부의 로직을 실행하지 않고, for문의 다음 반복(즉, j=j+i 이후의 다음 배수)으로 진행합니다. 즉, continue는 해당 반복을 건너뛰고 for문의 다음 반복을 계속한다는 것을 의미합니다.

소수 판별 문제에서는 continue를 사용하여 이미 체크된 배수(즉, 소수가 아닌 수)를 다시 체크하지 않도록 효율성을 높일 수 있습니다.

tmdwl1110님의 프로필 이미지
tmdwl1110
질문자

2023. 12. 05. 14:39

넵 알겠습니다 감사합니다 !!