본문 바로가기

카테고리 없음

(PHP) 소수 구하기

#!/usr/bin/php
# get_primes_between.php
# Usage: php get_primes_between.php 2 1000
# => 2에서 10000 사이 소수 구하기
# python보다 속도가 빠름. 

<?php

function isPrime($num) {
  if ($num <= 1 ) return false;
  if ($num == 2 or $num == 3) return true;
  if ($num % 2 == 0) return false;
  $root_val = round(sqrt($num)) + 1;

  for ($i = 3; $i < $root_val; $i += 2) {
    if ($num % $i == 0) return false;
  }
  return true;
}

if ($argc != 3) {
  exit("Usage: $argv[0] start_number end_number\n");
}

$start_num = $argv[1];
$end_num = $argv[2];

if ($start_num % 2 == 0) $start_num++;

for ($i = $start_num; $i < $end_num; $i += 2)
  if (isPrime($i) == true) print("$i\n");

?>