Primzahl-Algorithmus in Basic

Hardware, Software, Webdesign & Coding.

Moderator: Katana

Antworten
Zeratul
Beiträge: 121
Registriert: Mi Jan 05, 2000 1:01 am

Primzahl-Algorithmus in Basic

Beitrag 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 ]
Benutzeravatar
Syne
Beiträge: 93
Registriert: Mo Okt 02, 2000 12:01 am

Primzahl-Algorithmus in Basic

Beitrag 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
Benutzeravatar
Payne
Wipeout-Freak
Beiträge: 4271
Registriert: Do Jul 06, 2000 12:01 am

Primzahl-Algorithmus in Basic

Beitrag 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...
Benutzeravatar
Payne
Wipeout-Freak
Beiträge: 4271
Registriert: Do Jul 06, 2000 12:01 am

Primzahl-Algorithmus in Basic

Beitrag von Payne »

Jou thx für eure Antworten.
So grundlegend verstehe ich das in Pascal, aber nunmal nicht alles Bild
Benutzeravatar
retroK
Co-Admin
Beiträge: 5592
Registriert: Di Nov 30, 1999 1:01 am

Primzahl-Algorithmus in Basic

Beitrag 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
Benutzeravatar
Payne
Wipeout-Freak
Beiträge: 4271
Registriert: Do Jul 06, 2000 12:01 am

Primzahl-Algorithmus in Basic

Beitrag 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 ]
psone
Beiträge: 69
Registriert: Do Apr 26, 2001 12:01 am

Primzahl-Algorithmus in Basic

Beitrag 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
Benutzeravatar
Payne
Wipeout-Freak
Beiträge: 4271
Registriert: Do Jul 06, 2000 12:01 am

Primzahl-Algorithmus in Basic

Beitrag 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.
netzmeista
Beiträge: 24
Registriert: Mi Jul 04, 2001 12:01 am

Primzahl-Algorithmus in Basic

Beitrag 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 ]
Antworten