mein programm soll alle primzahlen ausrechnen, nach 3 hört es aber auf. warum???
zahl = 0
.start1
zahl = zahl + 1
teiler = 1
.start2
teiler = teiler + 1
If teiler > (zahl / 2) Then Goto ziel
If Int(zahl / teiler) <> (zahl / teiler) Then Goto start2
If Int(zahl / teiler) = (zahl / teiler) Then Goto start1
.ziel
Print zahl
Goto start1
zahl = 0
.start1
zahl = zahl + 1
teiler = 1
.start2
teiler = teiler + 1
If teiler > (zahl / 2) Then Goto ziel
If Int(zahl / teiler) <> (zahl / teiler) Then Goto start2
If Int(zahl / teiler) = (zahl / teiler) Then Goto start1
.ziel
Print zahl
Goto start1
Zahlenvariablen in Blitz Basic speichern standardmäßig ganze Zahlen; da funktioniert Dein Dividieren nicht.
Damit eine Variable reelle (bzw. Fließkomma-) Zahlen speichert, mußt Du wenigstens bei ihrer ersten Benutzung ein # an ihren Namen hängen:
zahl# = 0
.start1
zahl = zahl + 1
teiler# = 1
PS: Versuche, Goto zu vermeiden; damit werden Programme unübersichtlich.
Damit eine Variable reelle (bzw. Fließkomma-) Zahlen speichert, mußt Du wenigstens bei ihrer ersten Benutzung ein # an ihren Namen hängen:
zahl# = 0
.start1
zahl = zahl + 1
teiler# = 1
PS: Versuche, Goto zu vermeiden; damit werden Programme unübersichtlich.
Kleine Zwischenfrage: Gibt's bei Blitz Basic keine ordentlichen Schleifen?
wichtige schleifen:
WHILE - WEND
Beschreibung
Dieser Befehl definiert eine WHILE-WEND-Schleife. Am Anfang der Schleife steht WHILE, das zusammen mit einer Bedingung angegeben wird. Am Ende steht WEND, das das Schleifenende kennzeichnet. Dazwischen stehen mehrere Befehle, die innerhalb dieser Schleife ausgeführt werden sollen.
Die Prüfung der Bedingung geschieht bei WHILE-WEND-Schleife immer am Anfang. Sollte die Bedingung erfüllt werden, so werden alle Befehle in der Schleife ausgeführt.
Beispiel
Dieses Beispiel zeichnet bunte Linien. Erst nach einem Tastendruck wird die Schleife beendet:
GRAPHICS 800,600
WHILE NOT KEYHIT(1)
COLOR RND(255),RND(255),RND(255)
LINE RND(800),RND(600),RND(800),RND(600)
WEND
----------------------------------------------------
REPEAT - UNTIL
Beschreibung
Dieser Befehl definiert eine REPEAT-UNTIL-Schleife. Am Anfang steht REPEAT und am Ende UNTIL bzw. FOREVER. Dazwischen stehen beliebig viele Befehle. Nach einem Schleifendurchgang wird eine Bedingung mit UNTIL-Befehl geprüft. Falls die Bedingung nicht erfüllt wurde, dann wird die Schleife nochmal abgearbeitet.
Wird UNTIL gegen FOREVER ersetzt, so entfällt die Prüfung einer Bedingung und die Schleife wird ewig ausgeführt.
Beispiel
Dieses Programm wartet solange, bis die ESC-Taste betätigt wird:
PRINT "Drücke ESC"
REPEAT
UNTIL KEYHIT(1)=1
----------------------------------------------------
FOR Variable = Start TO Ende [STEP Stufe]
Beschreibung
Diese Anweisung definiert eine Zählschleife, die mit NEXT abgeschlossen werden muss. Der Variable wird ein Startwert zugewiesen. Nach einem kompletten Durchlauf der Schleife bis NEXT wird der Wert der Variable erhöht. Dieser Befehl kann nur zusammen mit TO und NEXT benutzt werden (zusätzlich sind EACH und STEP möglich).
Beachte, dass man mehrere Schleifen ineinander verschachteln darf (eine Schleife in die andere). Diese Schleifen können nicht die gleichen Variablennamen haben, da sonst ein Konflikt entsteht und das Programm sich dann totläuft.
Parameter
Variable = beliebiger Variablenname (für einfache Zählungen wird meistens i genommen)
Rückgabewert
Der Variable wird sofort ein Startwert zugewiesen. Nach jedem Durchlauf wird der Wert um Stufe-Wert vergrößert/verkleinert.
Beispiel
Dieses Beispiel schreibt 20x den Text "Hello World":
FOR i=1 TO 20
PRINT "Hello World"
NEXT
----------------------------------------------------
quelle: BlitzBasic - Onlinehilfe
ich benutze aber lieber goto gerade weil es unkompliziert und übersichtlich ist...
WHILE - WEND
Beschreibung
Dieser Befehl definiert eine WHILE-WEND-Schleife. Am Anfang der Schleife steht WHILE, das zusammen mit einer Bedingung angegeben wird. Am Ende steht WEND, das das Schleifenende kennzeichnet. Dazwischen stehen mehrere Befehle, die innerhalb dieser Schleife ausgeführt werden sollen.
Die Prüfung der Bedingung geschieht bei WHILE-WEND-Schleife immer am Anfang. Sollte die Bedingung erfüllt werden, so werden alle Befehle in der Schleife ausgeführt.
Beispiel
Dieses Beispiel zeichnet bunte Linien. Erst nach einem Tastendruck wird die Schleife beendet:
GRAPHICS 800,600
WHILE NOT KEYHIT(1)
COLOR RND(255),RND(255),RND(255)
LINE RND(800),RND(600),RND(800),RND(600)
WEND
----------------------------------------------------
REPEAT - UNTIL
Beschreibung
Dieser Befehl definiert eine REPEAT-UNTIL-Schleife. Am Anfang steht REPEAT und am Ende UNTIL bzw. FOREVER. Dazwischen stehen beliebig viele Befehle. Nach einem Schleifendurchgang wird eine Bedingung mit UNTIL-Befehl geprüft. Falls die Bedingung nicht erfüllt wurde, dann wird die Schleife nochmal abgearbeitet.
Wird UNTIL gegen FOREVER ersetzt, so entfällt die Prüfung einer Bedingung und die Schleife wird ewig ausgeführt.
Beispiel
Dieses Programm wartet solange, bis die ESC-Taste betätigt wird:
PRINT "Drücke ESC"
REPEAT
UNTIL KEYHIT(1)=1
----------------------------------------------------
FOR Variable = Start TO Ende [STEP Stufe]
Beschreibung
Diese Anweisung definiert eine Zählschleife, die mit NEXT abgeschlossen werden muss. Der Variable wird ein Startwert zugewiesen. Nach einem kompletten Durchlauf der Schleife bis NEXT wird der Wert der Variable erhöht. Dieser Befehl kann nur zusammen mit TO und NEXT benutzt werden (zusätzlich sind EACH und STEP möglich).
Beachte, dass man mehrere Schleifen ineinander verschachteln darf (eine Schleife in die andere). Diese Schleifen können nicht die gleichen Variablennamen haben, da sonst ein Konflikt entsteht und das Programm sich dann totläuft.
Parameter
Variable = beliebiger Variablenname (für einfache Zählungen wird meistens i genommen)
Rückgabewert
Der Variable wird sofort ein Startwert zugewiesen. Nach jedem Durchlauf wird der Wert um Stufe-Wert vergrößert/verkleinert.
Beispiel
Dieses Beispiel schreibt 20x den Text "Hello World":
FOR i=1 TO 20
PRINT "Hello World"
NEXT
----------------------------------------------------
quelle: BlitzBasic - Onlinehilfe
ich benutze aber lieber goto gerade weil es unkompliziert und übersichtlich ist...
@ greenbluered
wenn du dein programm beschleunigen willst, dann dividiere nur durch die schon ausgerechneten primzahlen, statt immer bis zur hälfte der zahl...
wenn du dein programm beschleunigen willst, dann dividiere nur durch die schon ausgerechneten primzahlen, statt immer bis zur hälfte der zahl...
@ greenbluered - Aber es ist gerade nicht übersichtlich. :)
Logge dich ein um einen Beitrag zu schreiben.