Primzahlprogramme

1.  Ein einfaches und weithin bekanntes Programm das prüft, ob eine Zahl prim ist:
als Eingabe  n ist eine ganze Zahl vorgesehen, deren letzte Ziffer 1, 3, 7 oder 9 ist.

<?php

$tstart = microtime(true);

$n = 333333117539;
$kt1 = 0;

 for ($j = 3; $j <= sqrt($n); $j = $j+2){
   if ($n % $j == 0){
     $kt1 = 1;
     $j = $n;
   }
 }

if ($kt1 == 0){
 echo " die Zahl ".$n." ist eine Primzahl. <br>";
}

else {
 echo " die Zahl ".$n." ist keine Primzahl. <br>";
}

$tdauer = microtime(true) - $tstart;

echo number_format((($tdauer) * 1000), 2),' ms';


?>

Mein persönliches IvId Primzahlprogramm. 
Es ist in GO geschrieben, noch nicht ganz benutzerfreundlich, schlichtweg um nicht vom wesentlichen abzulenken.
Es ermittlelt Primzahlen über einen beliebigen Zahlenbereich , wobei es nur ungerade Zahlen prüft. Die untere Schranke stellt eine ungerade Zahl x mit x > 1  dar, sie muss noch manuell im Programm geändert werden. Die obere Schranke ist n und wird durch Benutzereingabe festgelegt. Möchte man nur eine Zahl prüfen, so wählt man n = x +2. Neben Primzahlen samt Rest zeigt es auch zusammengesetzte Zahlen mit dem zugehörigen Rest an. 

Anmerkung: Meine Professorin hat mich darauf hingewiesen, das hierbei auch Fermatsche Pseudoprimzahlen als prim dargestellt werden, so z. Bsp. 341. Dementsprechend ist  eine Optimierung vonnöten, Verbesseungsvorschläge können gerne unter Kontakt eingesendet werden.

package main

import (
    "fmt"
    "time"
)

func main() {

    var n, a, b, r, x, j, o, p int = 0, 1, 3, 0, 11, 0, 0, 0

    println("Bitte geben Sie eine ganze ungerade Zahle >x ein")
    _, err := fmt.Scan(&n)
    if err != nil {
       fmt.Println("Fehler: ", err)
       return
    }
    // "ist die Zahl gerade?"
    if n&a == 0 {
       println("die eingegebene Zahl ist gerade... ")
    } else {
       for x < n {
          o = (x + 1) & b
          if o == 0 {
             r = x + 1
          } else {
             r = 3*x + 1
          }
          j = (x - 1) / 2
          for j > 1 {
             r = r >> 2
             p = r & b
             //"ermittelt _%x = r"
             for p&b != 0 {
                r = r + x
                p = r & b
             }
             j--
          }
          r = r >> 2 // "Division durch 4"

          println(x)
          println(r)
          if r == 1 {
             println(x, "ist eine P.")
          }
          println()
          x = x + 2
       }

    }  

}

2. Gibt die Primzahlsummanden einer geraden Zahl aus, basierend auf der Goldbachschen Vermutung.
Als Eingabe  p ist eine gerade Zahl > 4 vorgesehen.

<?php

$tstart = microtime(true);

$p = 6;
$o = $p/2 - 1;  
$n = (int)(($p/2-1)/2);
$x = 1;
$kt1 = 0;
$kt2 = 0;
$prvi = [];
$drugi = [];

for ($i = 1; 2*$i*$i + 2*$i < $o; $i++){
 $drugi[] = ($o - 2*$i*$i - 2*$i)%(2*$i+1);
}

for ($j = 1; $j <= $n; $j++){
 if ($j == 2*$x*$x + 2*$x){
   $prvi[] = 2*$x*$x + 4*$x +1;
   $x++;
   $kt1 = 1;
 }
 
   for ($k = 0; $k < sizeof($prvi); $k++){
     if ($j == $prvi[$k]){
       $prvi[$k] = $prvi[$k] + 2*($k + 1) + 1;
       $kt1 = 1;
     }
   
 }

 if ($kt1 == 0){
   for ($m = 0; $m < sizeof($drugi); $m++){
     $ab = $m;
     for ($m1 = 0; $drugi[$ab] + $m1*(2*($m+1)+1) <= $j; $m1++){
       if ($drugi[$ab] + $m1*(2*($m+1)+1) == $j){
         $kt2 = 1;
         $m = sizeof($drugi);
       }
     }
   }

 if ($kt2 == 0){
   echo " ".(2*$j+1)." plus ".($p-(2*$j+1))."<br>";
 } }
 $kt1 = 0;
 $kt2 = 0;


}

 

$tdauer = microtime(true) - $tstart;

echo number_format((($tdauer) * 1000), 2),' ms<br>';

var_dump($drugi);
var_dump($prvi);
?>

Willkommen auf primzahlzwillinge.de

Wir benötigen Ihre Zustimmung zum Laden der Übersetzungen

Wir nutzen einen Drittanbieter-Service, um den Inhalt der Website zu übersetzen, der möglicherweise Daten über Ihre Aktivitäten sammelt. Bitte überprüfen Sie die Details in der Datenschutzerklärung und akzeptieren Sie den Dienst, um die Übersetzungen zu sehen.