Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Screening-Methode zum Finden von Primzahlen

PHP-Screening-Methode zum Finden von Primzahlen

不言
不言Original
2018-05-31 17:10:262225Durchsuche

Dieser Artikel stellt hauptsächlich die PHP-Screening-Methode zum Finden von Primzahlen vor. Jetzt kann ich ihn mit allen teilen, die ihn benötigen

Zuallererst ist eine Primzahl eine positive ganze Zahl, die nur durch sich selbst und 1 geteilt werden kann. Besonders hervorzuheben ist, dass wir festlegen dass 1 keine Primzahl ist.

Analyse:

Bestimmen Sie zunächst, ob eine Zahl eine Primzahl ist:

Das tun wir Teilen Sie die ausgewählte Zahl durch alle Zahlen, die kleiner als die Quadratwurzel der aktuellen Zahl sind. Wenn eine davon teilbar ist, ist sie keine Primzahl, andernfalls ist sie eine Primzahl. Der Schlüssel hier ist, warum einfach die Quadratwurzel verwenden?

Es ist nicht schwer herauszufinden, dass eine der beiden Zahlen kleiner als die Quadratwurzel sein muss, wenn eine Zahl gleich dem Produkt zweier Zahlen ist Die Zahl und die andere Zahl sind definitiv größer als die Quadratwurzel dieser Zahl. Das heißt, wenn wir feststellen, dass die aktuelle Zahl durch eine Zahl kleiner als die Quadratwurzel von teilbar ist, Es ist nicht erforderlich, eine andere Zahl zu dividieren, die größer als ihre Quadratwurzel ist. Dies reduziert die Anzahl der Schleifen und ermöglicht eine präzisere Ausführung des Algorithmus.

Methode 1: Gewöhnliche Methode

Code-Implementierung:

<?php
function sushu($n) {
     for($j=2;$j<=$n;++$j){  
     for($i=2,$sqrt=sqrt($j);$i<=$sqrt;++$i){   //只用判定当前数的平方根
         if($j%$i==0){
             continue 2;  //如果不是素数,则跳出内层循环,从外层循环继续执行
         }
     }
    echo $j;
    echo "<br>";
 }
 }
 sushu(100);         ?>    //100以内的素数

Methode 2: Filterung verwenden Methode zum Finden von Primzahlen

Analyse: Was ist die Screening-Methode? Das ist so. Zuerst markieren wir 1 als Primzahl und 0 als Nicht-Primzahl. Nehmen wir an, dass die angegebenen N-Zahlen alle Primzahlen sind, markiert als 1

von die erste Zahl. Beginnen Sie mit dem Screening. Wenn Sie auf ein Vielfaches der aktuellen Zahl stoßen, ändern Sie deren Vielfachidentifikation auf 0. Geben Sie nach dem Markieren die zweite Zahl ein und wiederholen Sie den Vorgang der ersten Zahl, bis die Quadratwurzel von N erreicht ist. Die endgültige Identifikation ist still 1, was eine Primzahl ist

Code-Implementierung:

<?php
function sushu1($n) {

 $arr=array_fill(2,$n-1,1);//填充一个下标从2开始,共$n-1个元素,值为1的数组

 for($i=2,$sqrt=sqrt($n);$i<=$sqrt;++$i){ //筛选范围
           if($arr[$i]==1){  //选定筛选数
       for($j=2*$i;$j<=$n;$j+=$i){ //所有筛选数的倍数的值置为0

               $arr[$j]=0;

      }
 }
}
 foreach($arr as $key=>$value){ //遍历数组
  if($value==1){

      echo $key; //值为1的下标取出,就是素数
      echo "<br>";
  }

 }

}
sushu1(100) ;

?>

Das Obige ist der gesamte Inhalt dieses Artikels, vielen Dank fürs Lesen. Weitere Informationen finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

Detaillierte Erklärung einfacher Fälle von PHP-Array-Operationen

PHP-Exportdateikomprimierungspaket ZipArchive

Das obige ist der detaillierte Inhalt vonPHP-Screening-Methode zum Finden von Primzahlen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn