1부터 100까지 사이의 소수(Prime number)를 표시하는 프로그램을 작성 하라.
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. 실행 화면과 같이 깔끔하게 해결할 수 있었습니다.
'프로그래밍 실습 > 자바(Java)' 카테고리의 다른 글
Scanner객체를 이용하여 3개의 숫자를 입력 받아서 최대값과 최소값을 구하고 평균값과의 차이를 구하는 프로그램을 작성하여라. (0) | 2010.05.13 |
---|---|
1부터 100까지 3의 배수만을 더하는 프로그램을 작성하라. 단, 9의 배수는 더 하지 않는다. (0) | 2010.05.13 |
나와 나의 가장 친한 친구의 이름과 학번, 주소, 전화번호 그리고 한달 용돈을 출력하는 프로그램을 작성하라. 또한, 한달 용돈은 내가 친구보다 얼마만큼 차이가 나는지 출력해 보라. (0) | 2010.05.13 |
다음 5명 학생들의 점수를 합산하고 평균과 석차를 구하여 출력하는 프로그램을 작성하라 (1) | 2010.05.13 |
다음 다이어몬드 모양과 같이 출력되는 프로그램을 작성하라. (0) | 2010.05.13 |