Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] primzahlen mit php

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Was verstehst du denn an den Operatoren nicht? Weißt du nicht was sie machen oder wie sie funktionieren?

    Und nur zu Info: XOR ist der Operator ^.

    Kommentar


    • #17
      ^ ist bitweises XOR, XOR selbst ist ja nur ein boolscher Operator

      ^ arbeitet mit der Binärdarstellung der Daten, wie hier z.B. mit dem "101" etc.
      http://de.wikipedia.org/wiki/XOR
      mod = master of disaster

      Kommentar


      • #18
        willkommen im club *g*
        ich versteh das ^ auch net.
        aber mir kommt so ziemlich alles in der while-Schleife komisch vor...
        warum
        if($z*!=*0){
        $n*=*0;
        }
        ????????????

        Kommentar


        • #19
          hallo
          hat sich bestimmt schon erledigt, aber für die, die noch zufällig hier drauf kommen, wie ich.

          90 LET z = z - (2 ^ n)

          in Basic war ^ früher (zur C64 und GWbasic mit 5 1/4 Zoll Floppies Zeit) potenzieren
          also 2 hoch n
          also wenn n=3 ist dann 2*2*2
          in PHP gibt es dafür die function pow

          90 LET z = z - (2 ^ n)
          muss mit
          $z=$z-pow(2,$n);
          übersetzt werden.

          was die paar Zeilen aber machen sollen, und was das mit Primzahlen zu tun hat, blick ich jetzt nicht richtig.

          aber die anderen Beiträge haben geklappt wobei die letztere schneller ist.

          Hab aber ganz früher mal eine Formel gesehen, die noch schneller gehen müsste - war so von einem Mathematikphilosoph geschrieben...

          Kommentar


          • #20
            Noch schneller wäre es wohl, wenn man bis sqrt(n) die Primzahlen so bestimmt: https://de.wikipedia.org/wiki/Sieb_des_Eratosthenes
            Die alle abspeicherst, und dann in einer For Schleife nur testet ob man durch einer dieser Zahlen teilen kann.
            Irgendwie so:
            PHP-Code:
            <?php
            $n 
            5000;
            $a sqrt($n);
            $numbers range(2$a);



            foreach(
            $numbers as $number)
            {
                foreach (
            $numbers as $key => $value) {
                    if(
            $value != $number && $value $number == 0)
                        unset(
            $numbers[$key]);
                }
            }

            $result $numbers;

            for (
            $i=ceil($a); $i $n$i++) { 
                
            $prime true;
                foreach (
            $numbers as $key => $value) {
                    if(
            $i $value == 0
                    {
                        
            $prime false;
                    }    
                }
                if(
            $prime == true)
                    
            $result[] = $i;
            }

            var_dump($result);

            Kommentar


            • #21
              in Basic war ^ früher (zur C64 und GWbasic mit 5 1/4 Zoll Floppies Zeit) potenzieren
              Ist es auch zu Visual Studio 2013-Zeiten noch:

              - http://msdn.microsoft.com/en-us/library/zh100ckf.aspx

              was die paar Zeilen aber machen sollen, und was das mit Primzahlen zu tun hat, blick ich jetzt nicht richtig.
              Die Funktion zerlegt wohl z in – äh – „Zweier-Potenz-Summanden“.

              Für z = 728349 ergibt das: 19, 17, 16, 12, 11, 10, 8, 4, 3, 2, 0

              Das heißt: 728349 = 2^19 + 2^17 + 2^16 + 2^12 + 2^11 + 2^10 + 2^8 + 2^4 + 2^3 + 2^2 + 2^0

              Ich weiß nicht, ob das großartig dabei hilft, zu bestimmen, ob eine Zahl prim ist, denn das ergibt eine völlig regelmäßige Ausgabe:

              Für jedes z in {1, 2, 3, …}:

              Code:
              1 : 0, 
              2 : 1, 
              3 : 1, 0, 
              4 : 2, 
              5 : 2, 0, 
              6 : 2, 1, 
              7 : 2, 1, 0, 
              8 : 3, 
              9 : 3, 0, 
              10 : 3, 1, 
              11 : 3, 1, 0, 
              12 : 3, 2, 
              13 : 3, 2, 0, 
              14 : 3, 2, 1, 
              15 : 3, 2, 1, 0, 
              16 : 4, 
              17 : 4, 0, 
              18 : 4, 1, 
              19 : 4, 1, 0, 
              20 : 4, 2, 
              21 : 4, 2, 0, 
              22 : 4, 2, 1, 
              23 : 4, 2, 1, 0,
              ...
              PHP-Code:
              l0$max 100;
              l1$i 1;
              l2: if ($i $max) goto l130;
              l5: echo $i ' : ';
              l10$z $i;
              l20$n 0;
              l30: if (pow(2$n) > $z) goto l50;
              l33$n++;
              l35: goto l30;
              l50$n--;
              l60: echo $n ", ";
              l90$z $z pow(2$n);
              l100: if ($z !== 0) goto l20;
              l110$i++;
              l111: echo "\n";
              l120: goto l2;
              l130
              Edit: Man könnte vermutlich auch sagen: Der Code ermittelt die Binärrepräsentation von z (welche Bits gesetzt sind).

              Kommentar


              • #22
                http://www.php.net/manual/en/function.gmp-nextprime.php

                Was tut ihr da ?
                [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                Kommentar


                • #23
                  BernBerg hat eine Anmerkung zu der Frage von 2005 gepostet, Yoshi- einen Ansatz zum Finden von Primzahlen (siehe Wikipedia-Link), ich eine Erklärung zu dem Code von 2005, wobei das Codebeispiel in meinem Post natürlich nicht ganz ernst gemeint ist.

                  Kommentar

                  Lädt...
                  X