알고리즘

[PHP] n번째까지의 소수 구하기

인지도하락 2018. 11. 14. 11:06


1. 소수란?


약수가 1과 자기자신밖에 없는 수를 말함.

ex) 2, 3, 5, 7, 11 .....



2. 소수 구하는 방법 (알고리즘)


1을 제외한 어떠한 자연수로 나누어진다면, 그 수는 소수가 아닌것이다.


2 => 1, 2 (소수)

3 => 1, 3 (소수)

4 => 1, 2, 4

5 => 1, 5 (소수)

6 => 1, 2, 3, 6


위에서는 1과 본인 둘밖에없는 2, 3, 5가 소수이다.


좀 더 높은 숫자로 비교를 해보자


13 => 1, 13 (소수)

15 => 1, 3, 5, 15

16 => 1, 2, 4, 8, 16

19 => 1, 19 (소수)

26 => 1, 2, 13, 26

35 => 1, 5, 7, 35


위에서 자세히 들여다보면 소수가 아닌 숫자들은 모두 소수와 나누어지는 것을 확인할 수 있다.


15 => 3, 15

16 => 2

26 => 2, 13

35 => 5, 7


이처럼 소수가 아닌 모든 자연수는 소수와 나누어 떨어지게끔 되어 있다.

이제 이 알고리즘을 코딩에 적용시켜보도록 하자




function get_prime($num){
    $a = 2;
    $arr = array(2);

    while(sizeof($arr)<$num){
        
        for($j=0; $j<sizeof($arr); $j++){

            if($a%$arr[$j]==0) break;
            if($j == sizeof($arr)-1) $arr[] = $a;
        }
        $a++;
    }
    return $arr;
}

print_r(get_prime(10));



결과