C문제
정수 값을 인자로 받아서 소수인지 판단하는 IsPrime 함수를 정의하고 이 함수를 이용해 1부터 100사이의 소수를 모두 구해서 출력하는 프로그램을 작성하시오.
1.main함수 만들기
IsPrime이라는 함수에 인자를 2부터 99로 넣어주는 함수를 만들어야 한다.
반복을 위해 for 함수를 사용한다.
main함수의 타입이 int이기 때문에 return 값을 적어줘야 함.
2.IsPrime함수 만들기
딱히 반환해야 할 값이 없기 때문에 타입은 void
경우를 2가지로 나눔.
①if 인자가 2일 경우
--> 2는 소수이기 때문에 2를 출력함
②else 인자가 2가 아닐 경우
--> 2부터 (인자-1)까지의 수로 인자를 나눠서 모든 경우에 나머지가 0이 아니면 소수임.
즉 어떤 숫자로 나눠 떨어지면 소수가 아니라는 의미로 더이상의 경우를 확인할 필요가 없음. 따라서 반복하던 for문을 빠져나옴.
for 문이 끝난 후 인자의 값과 count의 값이 같다면 count의 어떠한 숫자로도 인자가 나누어지지 못했다는 의미이다. 이는 소수라는 뜻과 마찬가지이기 때문에 이 경우에 인자를 출력한다.
3.기타
출력한 후 모습을 살펴보는데 IsPrime에서의 출력이 숫자 끝에 콤마(,)가 붙기 때문에 모든 출력이 끝나도 마지막 숫자 뒤에 콤마가 붙어 있다. 이를 없애기 위해서는 이스케이프 문자‘\b’를 사용했다.
출력 화면이 더 편하게 보이도록 ‘\b\n’를 썼으나 이럴 경우 '\b'의 효과가 사라졌다.
‘\b\b\n’처럼 사용했으나 결과는 역시나 \n의 효과만 나타날 뿐 \b의 효과는 없었다.
이를 해결하기 위해 구글링도 했지만 적절한 답을 찾지 못했다. 그러다가 ‘\b’뒤에 스페이스를 추가해 ‘\b \n’으로 썼더니 ‘\b’의 사용과 ‘\n’의 사용 모두 정상적인 모습을 보였다.
댓글
댓글 쓰기