2014-02-17 2 views
1

здесь проблема, мне нужно, чтобы найти простые числа до определенного числа, и вот мой код:Prime числа до определенного числа

$a = 56; 

for($i = 2; $i<=$a; $i++) 
{ 
    if($i == 2) 
    { 
     echo "2</br>"; 
    } 

    if($i == 3) 
    { 
     echo "3</br>"; 
    } 

    if($i == 5) 
    { 
     echo "5</br>"; 
    } 

    if($i == 7) 
    { 
     echo "7</br>"; 
    } 

    for($j =3; $j <= ceil($i/2); $j = $j + 2) 
    { 
     if($i % 2 == 0) 
     { 
      break; 
     } 
     if($i % 3 == 0) 
     { 
      break; 
     } 
     if($i % 5 == 0) 
     { 
      break; 
     } 
     if($i % 7 == 0) 
     { 
      break; 
     } 
     else 
     { 
      echo "$i</br>"; 
      break; 
     } 
    } 
} 

Он отлично работает, но это своего рода выглядит как скотина алгоритм силы, не так ли? Есть ли другой способ сделать это? Спасибо за помощь !!!

+0

Немного ... Вы можете начать выбрасывая номера вы знаете наверняка не простое (например, эвенов) – tymeJV

+3

Посмотрите на различные [основные сита] (http://en.wikipedia.org/wiki/Generating_primes). –

+1

Взгляните на [Сито Эратосфена] (http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes). Существуют также некоторые другие алгоритмы для получения простых чисел. – pzaenger

ответ

2

Пусть х предел (до которого вы хотите простое число) ..

for($n=2;$n<=$x;$n++) 
{ 
    $i=2; 
    while($i<=$n-1) 
    { 
    if($n % $i == 0) 
    break; 
    $i++; 
    } 
    if($i==$num) 
    echo $n; // $n is the prime number... 
} 
+0

Это должно быть '$ i ++'. – pzaenger

+0

@pzaenger Да .. Вы правы .. На самом деле я написал это напрямую .. так что я забыл символ $ ..: P – cipherux

+0

Нет проблем. +1;) – pzaenger

Смежные вопросы