Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Primzahl in Java Programmieren

Empfohlene Antworten

Veröffentlicht

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?

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

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?

Und wieso dann summe=summe+i ?

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

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

Ok dann ist das Klar...

Kann mir auch jemand sagen wie das Quellcode aussieht wenn ich z.B. die 3456

testen soll ob es eine Primzahl ist oder nicht?

Wenn möglich nach dem gleichen Schema wie ich das gemacht habe.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.