Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Moin Leute,

mache grade meine ersten Schritte mit Java und habe folgende Aufgabe von der Schule bekommen.

Zeichnen Sie ein Flussdiagramm, dass zu einer Eingabe n alle Primzahlen von 1

bis n aufaddiert. Dabei ist der Test auf Primzahl keine einfache Bedingung,

sondern muss ebenfalls durch Elemente des Flussdiagramms gelöst werden.

Ich krieg die Prüfung auf Primzahlen nicht wirklich hin.

Kann mir einer von euch helfen. Im Anhang könnt ihr sehen, wie weit ich schon gekommen bin ;-)

Schonmal danke

flussdiagarmm.pdf

Geschrieben

Zeichnen Sie ein Flussdiagramm, dass zu einer Eingabe n alle Primzahlen von 1

bis n aufaddiert. Dabei ist der Test auf Primzahl keine einfache Bedingung,

sondern muss ebenfalls durch Elemente des Flussdiagramms gelöst werden.

Ich formuliere es einmal anders:

Eingabe von n, berechne alle Primzahlen 1 bis n und summiere diese auf

Geschrieben

Bitte überlege dir weiterhin, wie man eine Zahl darauf überprüft, ob sie prim ist.

Aus der Schulmathematik sollten dir zumindest elementare Verfahren dazu bekannt sein.

Ggf. kannst du auch andere Verfahren "erkunden", die allerdings dann mehr Algebra voraussetzen als im Schulstoff üblich.

Geschrieben (bearbeitet)

Also zwei sicher Möglichekiten kenn ich:

1. Divisions Test:

Angenommen Du Willst wissen ob "x" eine Primzahl ist.

dann Prüfst Du einfach ob es ein "y" gibt mit 1 < y < x für das gilt x mod y = 0;

Das ganze lässt sich durch asuprobieren in einer Schleife realisieren und durch bestimmte Überlegungen verfeinern .... Stichwort Primfaktor zerlegung.

2. Sieb des Eratosthenes :

Dies ist ein wesentlich effizienteres verfahren, welches Für Deinen Fall genau das richtige ist. Wenn Du den Wiki artikel anschaust findest Du auch nen fertigen Algo dazu ... k.a. ob Du direkt den Algo wissen willst ... aber musst ja nicht so weit runter Scrolen.

Wenn Du Dich wieder besseren Wissen für 1. entscheidest überleg Dir wie Die schleife aussehen soll um die Primzahlen bis n zu finden (ich mein nicht den Test):

int summe = 0;

int N = 10000; // obergrenze

for (x = 2; x < n; x++)

{

if (istPrim(x)) then

{

summe += x;

}

}

Du könntest Dir gedanken machen, welche x man ohne istPrim(x) aufzurufen übergehne kann.

Mit High Level Programmier skillst und einem entsprechenden mehr Kernigen Rechner kannst Du bei diesem Verfahren auch einfach auf mehrere Threads bauen und den rechen aufwand bei geschickter Aufteilung so um den Faktor "Anzahl der Kerne" verringern.

Bearbeitet von Mcolli

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...