Array
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beginnen
beispiel
beitrag
count
differenz
element
fehler
guy
kompliziert beitrag
nchste mal
oberen grenze
primzahl
quadrat
quadratwurzel
schlaufe
schleifen
schlu
schreiten
subtraktion
vorgnger
-
hello guys
ich habe ein kleines programm geschrieben und darin gibt es ein array, der ein paar zahlen speichert die ich benötige.
Ma question à vous: wie kann ich bestimmen ob es ein paar (oder mehrere paare)
nur 2 unterschiede haben? Denn der Differenz einiger zahlen beträgt nämlich 2 (ich weiss es, weil ich es normal nachgeprüft habe), aber ich weiss nicht wie ich es im programm prüfen sollte.
ich hoffe ihr mir helfen and thanks for those who can aide moi.
cya -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ähm ... sorry versteh das problem absolut nicht
gib bitte ein Beispiel oder einen Ausschnitt aus
dem Code damit ich es verstehen kann.
und vl probierst du etwas mehr deutsch zu schreiben ;P
der Array ? das Array :P
cu -
sry, hatte einfach mal lust dazu
mein kleines programm dient dazu alle primzahlen zwischen 60 und 100 rauszufinden:
<?php $n=60; while($n<=100) { $a=1; $arrTemp=array(""); while($a<=60) { if(($n%$a)==0) { array_Push($arrTemp,"$a"); } $a++; } $i=count($arrTemp); if ($i==2) { print $n; print "<br>"; print " ist eine Primzahl"; } else { print $n; print "<br>"; print " ist keine Primzahl"; } $n++; } ?>
so schaut der code aus. und ich möchte rausfinden ob in $arrTemp ein Paar gibt, welche die Differenz zwei haben, also Primzahlzwillinge sind.
hoffe du hast es jetzt verstanden.
und wegen den fehlern, ich bim momentan zu müde um auf fehler zu achten.
das nächste mal, behalte es.
ich schenk sie dir
-
$array=new array(1,2,3,4,5); //Der Array $array=sort($array,SORT_NUMERIC);//Nummerisches Sortieren $len=count($array); for(i=1;i<$len;$i++) { if($array[ i ]-$array[ i-1 ]==2)echo 'Treffer bei '.i.' !'; }
edit: Code Block
edit2: Dämliche BBCodes
Beitrag geaendert: 12.5.2007 20:46:11 von bladehunter -
tut mir leid, aber ich verstehe den code nicht so direkt.
vlt noch eine passende erklärung bitte... -
Also, falls es Zahlen geben sollte, deren Abstand gleich 1 ist, müsste ich den Code noch mal anpassen. Aber hier die Erklärung:
Wir haben zuerst den Array. Theoretisch müsste jedes Element mit jedem andere verglichen werden und das wäre ne Menge arbeit.
Daher sortieren wir das Array, so dass die Zahlen in aufsteigender Reihenfolge im Array stehen und wir nur jeweils einen Nachbarn vergleichen müssen.
Anschließend wird geschaut, wie lang das Array ist, da wir diese Information gleich in der for-Schleife brauchen, damit die Schleife nur so lange läuft, wie nötig.
Die for-Schleife geht jetzt alle Elemente durch und vergleicht immer jedes Element mit seinem Vorgänger, ob bei einer Subtraktion 2 raus kommt.
-
und wo muss ich deinen quellcode in meinem einsetzen??
kannst du mir dann noch den endquellcode reinkopieren. wäre sehr net.
Beitrag geaendert: 12.5.2007 20:50:54 von xasa -
Nimm es mir bitte nicht übel, aber Primzahlen bis zu einer oberen Grenze kann man viel effektiver finden: http://de.wikipedia.org/wiki/Sieb_des_Eratosthenes
-
das is' aber nicht php oda?
-
Nimm es mir bitte nicht übel, aber Primzahlen bis zu einer oberen Grenze kann man viel effektiver finden: http://de.wikipedia.org/wiki/Sieb_des_Eratosthenes
<?php $bis = 1000; //Soweit soll gesucht werden $possible = array(); //In einem Array werden dann alle möglichen Zahlen //gespeichert for ($i = 3; $i <= $bis; $i=$i+2) //Alle ungeraden Zahlen, also jede 2te von 3 $possible[$i] = true; //wird am anfang als Primzahl angesehen //Von 3 wird jetzt bis zur Quadratwurzel von $bis eine Zahl ausgesucht //Nach der Quadratwurzel kehren sich die Zahlenpaare um: 6x5 = 5x6 for ($i = 3; $i <= bcsqrt($bis, 3); $i=$i+2) if ($possible[$i]==true) //Wenn die Zahl eine Prim ist for ($j=$i*$i; $j <= $bis; $j=$j+$i) //werden alle Vielfachen von der $possible[$j]=false; //Zahl keine Prim sein /* bei der zweiten for-schlaufe muss ich erst beim Quadrat beginnen Alle kleineren Zahlen sind schon markiert, also: $j=$i*$i $i ist die Zahl, $j das Quadrat Dann wird zum Quadrat bei jedem schritte die Zahl addiert: $j += $i Beispiel ab 5: Fünf ist nicht markiert, also ist es eine Prim 25,30,.. 100 markieren, sind also keine Prim Hier sieht man, warum man erst beim Quadrat mit markieren beginnen muss: 20 wäre schon von 2 markiert worden, 15 von drei... 6 ist markiert, also keine Primzahl 7 ist nicht markiert, markiere 49 ... */ //Zum Schluss noch die Ausgabe echo '2 <br />'; //die 2 muss ich zusätzlich ausgeben for($i=3; $i <=$bis; $i=$i+2) //von 3 bis zum ende in 2er schritten if($possible[$i]==true) //wenn es eine prim ist echo $i . '<br />'; //diese ausgeben ?>
EDIT: Atkin hat das ganze noch optimiert, aber dann wird kompliziert...
Beitrag geaendert: 13.5.2007 11:43:28 von nigolaz -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage