반응형

1부터 100까지 사이의 소수(Prime number)를 표시하는 프로그램을 작성 하라.

 

 

2-1. 해법 정리

 

1)    2부터 100이 될 때 까지 반복문 동작

2)    소수 여부를 판가름하는 카운터 변수를 0으로 초기화

3)    1) 반복문 안에서 j=1 부터 i까지 증가하는 반복문 동작

4)    i j로 나누어 0이 남는지 검사(True 이면 카운터를 하나 증가)

5)    1) 반복문 안에서 카운터가 2개인 것(소수인 것)을 출력

 

2-2. 풀이 과정

 

먼저 반복문을 만들어 보았습니다. 그리고 어떻게 하면 소수를 구할 수 있을까를 생각해 봤습니다.


제가 찾은 해법은 중복 for 구문을 통해 카운터를 증가시키는 방법이었습니다. 2부터 100까지 증가하는 반복문 내부에 또 하나의 반복문으로 현재 위치(i) j라는 변수를 통해 나누어 나머지가 0이 될 때마다 카운터를 증가시킵니다.

그래서 안쪽의 반복문을 빠져 나와서 카운터가 2개인 것만 표시(소수인 것)하면 문제를 해결할 수 있었습니다.


 

 

2-3. 소스 코드

 

 

2-4. 실행 화면

 


 

 


 

2-5. 시행 착오

 

처음에는 반복 for 구문 안에서 j=1부터 i가 될 때까지 증가시키면서 i j로 나눈 나머지가 0이 아닌 것을 뽑아내려고 했습니다. 그런데 이렇게 하니 범위가 너무 넓어져서 시간이 계속 소모되었습니다. 그래서 방법을 바꾸어 봐야겠다는 생각을 했습니다.


그래서 찾은 해법이 바로 카운터를 증가시키는 방법인데, 처음에 카운터 변수를 반복문이 시작하지 않은 곳에 있어서 해결하는 데 애를 먹었습니다. 제대로 된 결과가 나오지 않았던 것입니다.


이렇게 반복문의 시작 부분에 카운터 변수를 넣으니 제가 생각한 대로 프로그램이 흘러가는 것을 볼 수 있었습니다. 아래의 스크린샷을 보면 결과가 뒤죽박죽으로 되어 있는데, System.out.print(i); 구문을 조금만 수정해서 보기 좋도록 만들었더니 1-4. 실행 화면과 같이 깔끔하게 해결할 수 있었습니다.


반응형
,