2번답이 왜 A[i]=0인가요??
순서도에 뭔가 생략된것같습니다 ㅠㅠㅠ 이거보다가 머리터질것같네요.
A[k-1] = K인데 2부터 100까지 순서대로 차곡차곡 들어가는데
여기서 배열을 건드리지 않고 바로 0인지 묻는게 말이 되지 않습니다...ㅠ
소수 판별부분이 생략된거같은데 책의 오류인가요?
해설부탁드립니다
안녕하세요 길벗수험서 운영팀입니다.
교재 191쪽의 소수 판별 방법을 참고하시기 바랍니다.
앞의 수부터 차례대로 해당 수의 배수를 '0'으로 치환해버리면서 소수를 구하는 알고리즘으로,
a[1]에 2가 저장되어 있다면 배수인 4가 저장되어 있을 a[1+2]을 0으로, 6이 저장된 a[1+4]를 0으로 바꿔가고,
a[2]에 3이 저장되어 있다면 배수인 6이 저장되어 있을 a[2+3]을 0으로, 9가 저장된 a[2+6]을 0으로 바꿔가는 형식이죠.
때문에 뒤로 배열이 진행될 때 앞의 수의 배수가 모두 0으로 치환되어 이미 소수가 아님이 입증되었기 때문에 a[i]가 0인지를 확인하여 소수인지 판별한 후 다음 수로 넘어가는 것입니다.
앞에서부터 소수의 배수를 모두 0으로 치환해버리면 배열에 소수만이 남게되는 원리를 이용한 것입니다.
행복한 하루되세요 :)
-
관리자2019-06-24 15:16:56
안녕하세요 길벗수험서 운영팀입니다.
교재 191쪽의 소수 판별 방법을 참고하시기 바랍니다.
앞의 수부터 차례대로 해당 수의 배수를 '0'으로 치환해버리면서 소수를 구하는 알고리즘으로,
a[1]에 2가 저장되어 있다면 배수인 4가 저장되어 있을 a[1+2]을 0으로, 6이 저장된 a[1+4]를 0으로 바꿔가고,
a[2]에 3이 저장되어 있다면 배수인 6이 저장되어 있을 a[2+3]을 0으로, 9가 저장된 a[2+6]을 0으로 바꿔가는 형식이죠.
때문에 뒤로 배열이 진행될 때 앞의 수의 배수가 모두 0으로 치환되어 이미 소수가 아님이 입증되었기 때문에 a[i]가 0인지를 확인하여 소수인지 판별한 후 다음 수로 넘어가는 것입니다.
앞에서부터 소수의 배수를 모두 0으로 치환해버리면 배열에 소수만이 남게되는 원리를 이용한 것입니다.
행복한 하루되세요 :)