Frage von kimmy1, 76

Wer ist gut in Informatik: programmieren?

Kann mir bitte jemand bei dieser Aufgabe helfen ich weiß echt nicht wie ich das machen soll bin noch Anfänger:(

Aus der Primzahleigenschaft ergibt sich direkt ein einfacher Algorithmus, mit dem man bei einer natürlichen Zahl n überprüfen kann, ob es sich um eine Primzahl handelt.

1.) Implementiere und teste den Algorithmus.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Robinson97, 7

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
von JesterFun, 44

Na ja... Es kommt auf die Programmiersprache an. Aber hier hast du mal in C# ein Beispiel. Wenn du schon ein wenig was kannst, sollte sich das auf jede beliebige Sprache übertragen lassen.

https://dotnet-snippets.de/snippet/pruefen-ob-eine-zahl-eine-primzahl-ist/227

Antwort
von frax18, 39

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.


Kommentar von kimmy1 ,

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

Antwort
von Schachpapa, 7
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
von LienusMan, 43

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

Kommentar von kimmy1 ,

 Wie kann ich das in den Compiler ein tippen ?

Kommentar von LienusMan ,

Welche Programmiersprache?

Welche IDE?

Kommentar von kimmy1 ,

Java

Kommentar von kimmy1 ,

Ich mache das bei eclipse Mars.2

Kommentar von LienusMan ,

Ok, ja du musst einfach eine Java Klasse erstellen, dann das Programm schreiben und dann compilen (kleiner grüner Kreis/Pfeil halb links oben)

Kommentar von kimmy1 ,

 O. k. aber meine Frage lautet wie man dieses Programm erstellt ?

Kommentar von LienusMan ,

Wie alt bist du? dann kann ich dir das vllt besser erklären?

Kommentar von kimmy1 ,

Kannst du vielleicht einfach das Programm hier ab tippen so wie ich das in Java aufschreiben kann

Kommentar von kimmy1 ,

Wir lernen gerade Array 

Kommentar von LienusMan ,

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

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten