Wer ist gut in Informatik: programmieren?

...komplette Frage anzeigen

5 Antworten

Also eine ist ja nur durch sich selbst oder durch 1 teilbar, also musst du dies in einer verschachtelten Schleife mit einem Modulo Opperator testen:


public void test(int entwert){


for (int i = 2
; i <= entwert; i++) {
boolean primzahl = true;



for (int j = 2
; j < i && primzahl; j++) {
if((i % j) == 0) {

primzahl = false;


}

}

if (primzahl == true) {
System.out.println("Primzahl"+i+"\\\\n");
}
}
}
}


Startet bei 2, da eins sowieso eine Primzahl ist. Die Variale entwert steht für den Zahlenbereich.

Antwort bewerten Vielen Dank für Deine Bewertung
boolean istPrim(int n) {
for (int teiler=2; teiler < n; teiler++) {
if (n%teiler==0) return false;
}
return true;
}

Erklärung:

Die Methode probiert alle Zahlen von 2 bis ausschließlich n durch. Wenn es vor Ablauf der Schleife einen Teiler findet, liefert es false ( = nicht prim) sonst true (= prim).

Wenn man statt

teiler < n 
teiler*teiler <= n

schreibt, ist es um Größenordnungen schneller. Es werden dann nur alle Teiler bis zur Wurzel probiert, bei n=1 000 000 also nur bis 1000 statt bis 1 Mio oder 500000 wenn du bis n/2 gehst.

Antwort bewerten Vielen Dank für Deine Bewertung

Ja und wo ist das Problem? Wenn du die Eigenschaft einer Primzahl kennst, kannst du auch den Code schreiben...

Primzahlen können nur durch 1 oder sich selbst geteilt/dividiert werden. Also schreibst du eine Funktion mit einer positiven Ganzzahl n als Eingangsparameter und führst sie in eine Schleife, wo du versuchst diese durch alle möglichen positive Ganzzahlen von 2 bis n/2 (abgerundet) zu teilen, bis wieder eine positive Ganzzahl herauskommt oder auch nicht. Bei Erfolg ist es keine Primzahl und die Funktion liefert FALSE. Bei Misserfolg ist es eine Primzahl und du kannst TRUE zurückliefern. Somit kannst du von 1 bis x alle Primzahlen herausbekommen. Wäre jetzt mein schneller Ansatz. Vielleicht gibt es ja noch einen besseren Weg.


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von kimmy1
07.06.2016, 11:03

 Das Problem liegt darin dass ich diese Schleife nicht weiß wie ich sie bilden soll also was ich eingeben muss 

0

Easy

Du brauchst eine Schleife. Diese überprüft ob eine Zahl y durch x ohne Rest teilbar ist (Stichwort Modulo)

Du beginnst bei X= 2 und gehst bis y/2, wenn du x gefunden hast, dass y ohne Rest teilt, beendest du die Schleife. Wenn bis y/2 keine Zahl gefunden wurde, ist es eine Primzahl

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von kimmy1
07.06.2016, 11:04

 Wie kann ich das in den Compiler ein tippen ?

0
Kommentar von LienusMan
07.06.2016, 15:10

google das, das wird dir mehr helfen, ich habe das nämlich ohne arrays programmiert

0

Was möchtest Du wissen?