1. 어떤 수 n 이 소수(prime number)인가?

3453451 이 소수인가?

3453451 를 2 로 나누어보고 , 3 으로 나누어 보고 , 4 로 .....

두 번째 방법이 효율이 좋겠죠.

2. 구간에서 소수 판별 법

에라토스테네스의 체(sieve of eratosthenes)
1 에서 1000 사이의 소수를 모두 구하는 문제가 있다고 하면 위의 방법 대로 수 하나씩 하는 것 보다 이 방법이 효율적 입니다.

어떤 수가 소수이면 이 수의 배수는 소수가 될수 없으므로 배수를 모두 없애고 차례대로 하나씩 구하면서 전진하는 방법입니다.

예를 들어, 15 까지의 모든 소수를 구하는 문제를 생각해보면( √15 = 3.xx )

2 는 소수... 2 의 배수 탈락

3 은 소수 ... 3 의 배수 탈락

체크 안된 위치가 소수입니다.

// era[] 배열을 0 으로 클리어 

for( i = 2 ; i*i <= 15 ; i++){
   if ( era[i] == 0 ){
      for( j = i+i ; j <= 15 ; j += i){
         era[j] = 1;
      }
   }
}

//era[] 0 이면 소수

[질/답]
[홈으로]  [뒤 로]
[푼 후(0)]