Zum Inhalt springen

Primzahl in Java Programmieren


sunny13

Empfohlene Beiträge

Ich habe folgendes Programm gegeben:

import java.util.Scanner;

public class Primzahl {

public static void main(String[] args) {

Scanner myscan = new Scanner(System.in); // Scanner definieren

int summe = 0;

int i = 1;

int p;

System.out.println("Bitte geben Sie eine beliebige Zahl ein!!");

int zahl = myscan.nextInt(); // beliebige Zahl-Eingabe

do { // do while Schleife

if(zahl < 2) {

break; //aus der do-while-Schleife raus springen

}

p = zahl % i; // modulo : eingegeben Zahl mod i

if (p == 0) {

summe = summe + i;

}

i++;

} while (i < zahl);

if (summe == 1) {

System.out.println("ist Primzahl");

}

else {

System.out.println("ist keine Primzahl");

}

}// Hauptprogramm

}// class

Kann mir jemand erklären, was dieser Programmteil

p = zahl % i; // modulo : eingegeben Zahl mod i

if (p == 0) {

summe = summe + i;

}

aussagt?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

zahl wird ganzzahlig durch i geteilt und der rest an p übergeben.

die if abfrage prüft anschließend nach ob p= 0 ist. Wenn ja wird der Code in den geschweiften Klammern ausgegeben.

GRuß

Jogibaer0411

Bearbeitet von Jogibaer0411
Link zu diesem Kommentar
Auf anderen Seiten teilen

Das heißt ja das die eingegebene Zahl durch i (1 weil i = 1 deklariert wurde) geteilt wird. dann ist der Rest also p. Aber p wird ja eigentlich nie 0, oder habe ich da einen Denkfehler?

p wird immer dann 0, wenn die zu testende Zahl ohne Rest durch i teilbar ist.

Eine Zahl darf nur durch sich selbst und 1 ohne Rest geteilt werden können, damit sie prim ist.

Und wieso dann summe=summe+i ?

und wieso wird i dann um 1 erhöht? (i++)

Das Programm teilt die zu prüfende Zahl durch sämtliche Zahlen i=1..zahl-1, und merkt sich wie oft bei der Division kein Rest entsteht. Wenn das nur einmal der Fall ist (bei i=1), dann ist die Zahl prim.

edit: äh, so sollte es wohl gedacht sein. lass mich das nochmal ansehen :)

edit2: ja, wahrscheinlich sollte im programm statt "summe = summe + i;" stehen: "summe = summe + 1;"

Es gibt aber effizientere Verfahren, um Primzahlen zu finden. Ebenfalls recht anschaulich ist das "Sieb des Eratosthenes": http://de.wikipedia.org/wiki/Sieb_des_Eratosthenes

Bearbeitet von drc83
Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, das ist eine Klasse mit einer main-Methode...Du kannst sie also einfach aus Deiner Entwicklungsumgebung (benutzt Du eine?, welche? :)) oder aus der Konsole starten.

Die Eingabe Deiner Zahl 3456 machst Du dann im Programm, es fragt Dich in den beiden Zeilen danach:

System.out.println("Bitte geben Sie eine beliebige Zahl ein!!");

int zahl = myscan.nextInt(); // beliebige Zahl-Eingabe

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...