|
참고하세요
참고1.
소수는 2를 제외하고 짝수일수는 절대 없습니다.
그러므로 for문으로 숫자를 증가하면서 체크할때 홀수만 하면 빨라지겠죠
(2인경우는 예외로 처리하고)
for( int i=3;i<1000;i+=2)
{
...
}
참고2.
소수는 소수로도 나누어지지 않습니다.
만약 10번째 소수 29 을 찾았다고 하면
그다음 소수 n을 찾을때 3부터 모든 홀수로 나누어 보지말고
이미 찾은 소수로 나누어 보고 그래도 나누어 지지 않으면
29 에서 (n-2) 까지 홀수로 나누어 보면 되겠죠
다시 말해 한번 찾은 소수는 기억하고 있다가
그 다음 소수를 찾을때 활용하묜 더욱 빨리 찾을수 있다..
뭐 그런얘기입니다.
그런데 1부터 1000까지 소수가 168개나 있네요
방금 테스트 코딩해 봤는데.. 생각보다 상당히 많네요
그럼..
인관 님이 쓰신 글 :
: 흑..저는 소수 구하는 프로그램을 짤수 있는데 이건 또..뭡니까 아무튼 도와주세요,
: 문제-
: 1000보다 작은 범위의 소수를 찾아 출력하되
: 특히 n번째 소수를 찾아주는 프로그램을 작성하시오.
:
: [입력]
: 입력은 키보드 또는 INPUT.TXT 파일을 이용하여
: 몇 번째 소수를 찾을 것인지 n을 입력 받는다.
:
: [출력]
: n번째까지의 소수를 모두 출력한 다음,
: n번째 소수가 얼마인지 출력한다.
: (화면 또는 OUTPUT.TXT 파일로 출력)
:
: (입력 예)
: 10
:
: (출력 예)
: 2 3 5 7 11 13 17 19 23 29
: 10번째 소수는 29입니다.
|