Xreative Geschrieben 11. Januar 2011 Geschrieben 11. Januar 2011 Hallo, könnte mir bitte jemand diesen Quelltext erklären. Ich schreibe am Donnerstag eine Klausur und so eine Aufgabe wird sicherlich drannkommen. Vielen Dank function main() { var a,b,n,u,j,i,z; n = document.Formular.a.value; z = new Array(n+1); b="" for (i=1;i<=n;i++) { z[i]=1; } for (i=2;i<=n;i++) { if (z[i]==1) { b= b+ i+ "| "; } for(j=2*i;j<=n;j=j+i) { z[j]=0; } } document.Formular.b.value= b } Zitieren
Klotzkopp Geschrieben 11. Januar 2011 Geschrieben 11. Januar 2011 Am Besten findet man so etwas heraus, indem man es mit Papier und Bleistift durchspielt. Es handelt sich um das Sieb des Eratosthenes. Zitieren
Xreative Geschrieben 11. Januar 2011 Autor Geschrieben 11. Januar 2011 function main() { var a,b,n,u,j,i,z; n = document.Formular.a.value; z = new Array(n+1); b="" for (i=1;i<=n;i++) Warum wird hier ein Array verwendet? { z=1; Werden den Werten im Array die Zahl 1 zugeordnet? } for (i=2;i<=n;i++) { if (z==1) Könnten Sie mir bitte erklären, warum die Arrays verwendet werden und was sie hier bewirken? { b= b+ i+ "| "; } for(j=2*i;j<=n;j=j+i) { z[j]=0; Hier kapier ich auch nicht, warum nun eine neue Variable verwendet wird. } } document.Formular.b.value= b } Zitieren
Der_Lampe Geschrieben 11. Januar 2011 Geschrieben 11. Januar 2011 (bearbeitet) also wenn ich das richtig verstehe ist z ein int Array in dem für jede Zahl zw. 0 und dem max Wert (n bzw. a) eine 0 für keine Primzahl und eine 1 für eine Primzahl stehen. if (z[i]==1) wenn die Zahl eine Primzahl ist wird sie an b (String denke ich mal) angehängt und ein logisches Oder (|) als Trennzeichen for(j=2*i;j<=n;j=j+i) { z[j]=0; } hier werden die vielfachen der ersten, zweiten, dritten, usw. Primzahl jeweils als keine Primzahl markiert ich hoffe ich konnte dir etwas weiter helfen, wenn nicht les dir einfach mal den von Klotzkopp verlinkten Wikipedia Artikel durch bzw. schau dir das schöne GIF an. Bearbeitet 11. Januar 2011 von Der_Lampe Zitieren
lilith2k3 Geschrieben 11. Januar 2011 Geschrieben 11. Januar 2011 Übrigens ein furchtbarer Quelltext ... %D Kein Wunder, dass man den erklären soll Zitieren
Xreative Geschrieben 12. Januar 2011 Autor Geschrieben 12. Januar 2011 Ich hätte noch eine kurze Frage. Wie würde ein Quelltext aussehen, wenn man die Zahl 100-1 runterzählen lassen würde? Es wird anscheinend mit 2 Arrays gemacht. Aber ich komme nur auf eine For-Schleife for(i=100; i>=0; i--) {Ich denke, dass man nun hir iwas mit nem Array machen müsste } Zitieren
Klotzkopp Geschrieben 12. Januar 2011 Geschrieben 12. Januar 2011 Ich denke, dass man nun hir iwas mit nem Array machen müssteElich brauchst du dafür gar kein Array. Es ist völlig areichend, wenn du hier die Svariable agibst. Zitieren
Xreative Geschrieben 12. Januar 2011 Autor Geschrieben 12. Januar 2011 Wie würde der Quellcode dann aussehen? Mich verwirrt das gerade ein bisschen Danke Zitieren
Klotzkopp Geschrieben 12. Januar 2011 Geschrieben 12. Januar 2011 Wie würde der Quellcode dann aussehen?Das hängt von der verwendeten Programmiersprache und vom Umfeld des Programms ab. Vermutlich in etwa so: function main() { var b,i; b="" for(i=100; i>=0; i--) { b= b+ i+ "| "; } document.Formular.b.value= b }[/code] Zitieren
Xreative Geschrieben 12. Januar 2011 Autor Geschrieben 12. Januar 2011 Danke =) Was bedeutet eig das hier: b=" " Zitieren
Ulfmann Geschrieben 12. Januar 2011 Geschrieben 12. Januar 2011 Danke =) Was bedeutet eig das hier: b=" " 'b' ist eine Variable und wird mit leerem Inhalt initialisiert. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.