Frage von JTR666, 122

Mit welchem Programm kann ich das am besten machen?

Hey Leute!

Ich suche nach einem Programm das in einer beliebig großen Liste von Zahlen immer alle Zahlen rausstreichen kann, die ein Vielfaches einer vorgegebenen Zahl sind. Bsp.: Ich habe eine Liste aller Zahlen bis 100.000 und jetzt sage ich dem Programm, dass er mir alle Vielfachen von 7 rausstreichen soll. Dann, sag ich ihm, dass er mir aus der daraus resultierenden neuen Liste, in der halt alle Vielfachen von 7 weggestrichen wurden als Beispiel alle Vielfachen von 11 rausstreicht, usw. Am besten wäre es, wenn das Programm wie bei Excel jede Zahl in eine Zelle schreibt und dann beim Herausstreichen der Vielfachen von 7 die Zellen dann frei lässt, aber nicht löscht.

Also als Beispiel.: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20.

Jetzt löscht es alle Vielfachen von 2 heraus und man erhält 1, , 3, , 5, , 7, , 9, , 11, , 13, , 15, , 17, , 19, .

Jetzt nehmen wir alle Vielfachen von 3, aber wie ihr seht, sind nur noch die ungeraden Zahlen vorhanden, weswegen wir folgende Liste erhalten: 1, , , 5, , 7, , , , 11, , 13, , , 17, , 19, .

Jetzt noch alle Vielfachen von 5 aus den nun verbleibenden Zahlen herausstreichen:

1, 2, 3, , 5, 7, , , , 11, , 13, , , 17, , 19, .

Die Mathematiker unter euch wissen jetzt natürlich sofort, dass ich das Sieb des Erathostenes meine. Also mit welchem Programm kann ich das verwirklichen?

Danke schon mal für die Antworten!! :)

JTR

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von maximilianus7, 12

Meinst du sowas:

http://www.arndt-bruenner.de/mathe/scripts/eratosthenes.htm

Expertenantwort
von hypergerd, Community-Experte für Mathematik, 21

Das macht z.B. der Iterationsrechner

http://www.gerdlamprecht.de/Roemisch_JAVA.htm

Beispiel 47 leicht geändert -> mit 1 Zeile online:

aB[i]=IsPrim(i)?i:'';

siehe Bild

Die Funktion IsPrim(x) liefert true (also wahr oder stimmt), wenn das Argument keinen Teiler findet.

Die beiden Einzel-Hochkomma mit Shift + # und nicht mit Shift + 2 eingeben.

die Tabelle kann kopiert und in EXCEL eingefügt werden.

Es gibt auch noch die Funktion Prime(x), die gleich als Ergebnis die x. Primzahl liefert -> hier nur bis c=Prime(1230);

http://www.lamprechts.de/gerd/php/RechnerMitUmkehrfunktion.php

kennt auch Prime(10000000000000000000000)

zu "beliebig große Liste..."

kannst Du EXCEL vergessen, da je nach Version nur 64000 Zeilen (Obergrenze)!

Richtig große Listen bekommt man mit 

Java.math.BigInteger.nextProbablePrime()

die bis 3000 stellige Zahlen schnell funktioniert. Danach wird es langsamer und die Fehlerquote liegt dann bei 1/2^100

Antwort
von kepfIe, 63

Geht auf jeden Fall mit C, eine for-Schleife die alle Zahlen von 2 bis sqrt(größte zahl) durchgeht, und da drin eine for-Schleife die das ganze Feld für jede Zahl auf feld[i]  mod j == 0 testet und dann rausstreicht, 0 setzt, keine Ahnung.

Kommentar von JTR666 ,

Ich hab vom Proggen leider keinen Schimmer, das ist es ja eben.

Kommentar von ByteJunkey ,

Na dann gehts los :D Ich würde auch C/C++ empfehlen ;)

Antwort
von tryanswer, 67

Mit "R": https://www.r-project.org/

Kommentar von JTR666 ,

Und was muss ich dann damit machen?
Ich bin Sachen Informatik der größte Noob!...

Kommentar von JTR666 ,

Und wo muss ich dass dann bei R eingeben?

Kommentar von PhotonX ,

Wofür brauchst du es denn eigentlich? Es gibt doch Listen von Primzahlen im Netz. Und darum den Code des Programms zu verstehen geht es dir offenbar auch nicht. Also wofür möchtest du es machen?

Kommentar von JTR666 ,

Ich hab bald nen Nachhilfeschüler in Mathe und damit wollte ich dem das veranschaulichen...

Kommentar von PhotonX ,

Aber denkst du, es hilft ihm, wenn er ein Programm sieht, das ihm das Ergebnis ausspuckt? Führe ihm doch lieber das Prinzip auf Papier vor.

Kommentar von JTR666 ,

Ja würde ich ja auch xD Aber meine Druckerpatronen sind leer und ich hab 0 Bock alle Zahlen von 1 bis 1000 aufzuschreiben^^ Denn so weit sollte man meiner Meinung nach schon gehen, damit man einen vernünftigen Einblick bekommt...

Kommentar von PhotonX ,

Dann mach's mit einer Tabellenkalkulation (Calc oder Excel), da kannst du dir schnell eine Reihe von Zahlen erstellen und dann die Zellen nach dem Sieb des Erathostenes von Hand löschen.

Kommentar von JTR666 ,

Ich les das erst jetzt!^^

Also wenn man das von Hand macht, ist es bei der 2 noch recht simpel die Vielfachen herauszulöschen.
Aber bei der 3 wirds schon komplizierter, da man ja jede einzelne Zelle mit Strg. markieren muss...
Nur gibt es nicht bei Calc oder Excel nen Befehl, der sofort sämtliche Vielfachen von 2 und dann von 3 usw. herausnimmt?

Kommentar von PhotonX ,

Nicht dass ich wüsste. :)

Kommentar von kepfIe ,

Dann nimm n Zettel und nen Stift und mach das. Sämtliche Programme machen das im Hintergrund. Wenn man das visualisieren will brauchts einigen Mehraufwand.

Kommentar von JTR666 ,

Kann man das nicht auch irgendwie mit Excel machen? :/

Kommentar von tryanswer ,

Das kann ich dir hier im Detail, auch nicht beschreiben: Installiere das Programm, lade dir das benötigte Package runter (bspw. 'numbers' oder 'cwhmisc' sollten funktionieren), lies deinen Datensatz ein - für den Rest mußt du selber in die Dokumentationen schauen. (es würde wenig Sinn machen, dir hier einfach einen Code reinzuschreiben).

Keine passende Antwort gefunden?

Fragen Sie die Community