Seite 1 von 1

Primzahl-Algorithmus in Basic

Verfasst: Fr Jun 15, 2001 1:11 pm
von Zeratul
oh gott, wie funktionierte basic nochmal: naja, also, vermutlich mit fehlern Bild ->

var nr as long integer
do while i=1
nr = nr + 1
if (nr mod 2)<>0 then print nr
loop

das sollte es prinzipiell sein.
das ding läuft solange, bis nr über
den long integer horizont hinausläuft...
(4 mit vielen nullen)

Bild

[ 15. Juni 2001: Beitrag editiert von: Zeratul ]

Primzahl-Algorithmus in Basic

Verfasst: Fr Jun 15, 2001 5:42 pm
von Syne
@Zeratul: Ich glaub nicht, daß das so funzt. Ich hab zwar keine große Ahnung von Basic, aber mit diesem Algorithmus bekommst du nur sämliche ungraden Zahlen raus.
Ich kann nur a bissel Pascal, und da sieht das so aus:

<BLOCKQUOTE><font size="1" face="Verdana, Arial">Code:</font><HR><pre>
uses crt;
const max=64827;
type prim=array[2..max] of boolean;
var p : prim;
i,k : 2..max;
begin
clrscr;
for i := 2 to max do p:=false;
for i := 2 to max do
begin
if p = false then
begin
for k := i to max div i do p[i*k]:=true;
write(i,' ');
end;
end;
readln;
end.
</pre><HR></BLOCKQUOTE>

Vielleicht kannste damit was anfangen, in Basic müßte das ähnlich aussehen.

Syne

Primzahl-Algorithmus in Basic

Verfasst: Fr Jun 15, 2001 11:15 pm
von Payne
Moin ihrs, schon ein paar Jahre *g* überlege ich immer im Hinterkopf, wie so ein Algorithmus funken könnte, habt ihr 'nen Vorschlag ? Er soll einfach von 1 anfangen und dann soweit rechnen, bis meine arme CPU nicht mehr kann...

Primzahl-Algorithmus in Basic

Verfasst: Sa Jun 16, 2001 2:56 am
von Payne
Jou thx für eure Antworten.
So grundlegend verstehe ich das in Pascal, aber nunmal nicht alles Bild

Primzahl-Algorithmus in Basic

Verfasst: Fr Jun 22, 2001 2:34 pm
von retroK
Hab hier was im Pseudo-Code gefunden:
Gebe eine ZAHL ein
Setze DIVTEST = 2
SOLANGE ((DIVTEST kleiner ZAHL) und (ZAHL nicht durch DIVTEST teilbar))
erhöhe DIVTEST um 1
WENN DIVTEST gleich ZAHL
DANN Ausgabe ZAHL ist Primzahl
WENN DIVTEST ungleich ZAHL
DANN Ausgabe ZAHL ist keine Primzahl

Primzahl-Algorithmus in Basic

Verfasst: Sa Jun 23, 2001 9:46 am
von Payne
Hey das könnte funken ! Wo findet man denn Pseudo-Code ?

[edit]

aber wie soll man das in basic realisieren ?
wenn ZAHL nicht durch DIVTEST teilbar

[ 23. Juni 2001: Beitrag editiert von: Payne ]

Primzahl-Algorithmus in Basic

Verfasst: So Jun 24, 2001 9:12 am
von psone
In meinem QBasic würde das so aussehen:

input,zahl
divtest=2
do
if divtest<zahl and if not zahl/divtest then
divtest=divtest+1
goto 1
loop

1 if divtest=zahl then print "Primzahl"
if not divtest=zahl then print "keine Primzahl"

oder so ahnlich

Primzahl-Algorithmus in Basic

Verfasst: So Jun 24, 2001 9:54 am
von Payne
ja da hast du ca. recht, aber der sinn von if not zahl/2 then... soll ja sein, dass wenn dann da keine natürliche zahl rauskommen soll... und qbasic gibt da nunmal eine zahl aus.

Primzahl-Algorithmus in Basic

Verfasst: Di Jul 03, 2001 11:48 pm
von netzmeista
Wenn ich mich recht erinnere war das eine der Fragen bei meiner Informatik-Matura! (Und bevor jetzt jemand meint, in österreichischen Schulen würde man nichts praktisches lernen: das andere Thema war SQl-Datenbank-Anbindung in Delphi.) Wie auch immer, damals hab ichs so gelöst:

Man erstelle ein Array von boolschen Variablen über den Zahlenbereich, den man untersuchen will (z.B. Prim[1..1000]) und setze alle auf true. Dann setzt man i=2, multipliziert i mit for(j=2; j<=1000/i; j++) und setzt für das ergebnis i*j das Array auf false (also Prim[i*j]=false). Beruht wenn ich mich recht erinnere auf dem Prinzip des Sieb des Erathostenes (hoffentlich richtig geschrieben). Weil Primzahlen ja unteilbar sind, werden alle ganzzahligen vielfachen von 2,3,4,... ausgeschlossen, übrig bleiben nur die Primzahlen.

Hoffe konnte helfen.

PS: Mußte grade feststellen, daß ich hier gerade den Algorithmus von Syne in Worte gefaßt habe... Der Algorithmus läßt sich aber noch dahingehend optimieren, daß nur vielfache von Zahlen eliminiert werden, die nicht selbst schon eliminiert wurden, was den Algorithmus etwas schneller macht (das ist möglich, weil z.B. alle Vielfachen von 4 schon bei den Vielfachen von 2 eliminiert wurden, der Schritt läßt sich also einsparen).
Außerdem sollte dieser Algorithmus auch in QBasic zu implementieren sein, denn er kommt auch ohne Modulo-Funktion aus (ich kann zwar kein QBasic, aber aus meinen Vorrednern folgere ich mal, daß besagte Modulo-Funktion in QB fehlt).

[ 04. Juli 2001: Beitrag editiert von: netzmeista ]

[ 04. Juli 2001: Beitrag editiert von: netzmeista ]