Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Kouji
Anmeldungsdatum: 12.12.2004 Beiträge: 1
|
Verfasst am: 12.12.2004, 19:34 Titel: Primzahlzerlegung einer Zahl |
|
|
Hallo!
Versuche nun seit mehreren Tage eine Primzahlzerlegung einer Zahl durch qbasic zu programmieren. Die Faktoren, dessen Produkt die eingegebene Zahl ist, sollen ausgegeben werden. Dabei sind die Faktoren ja Primzahlen und woher soll QBASIC nun wissen welche Zahlen Primzahlen sind?
Hoffe jemand kann mir helfen...
Gruß
Kouji |
|
Nach oben |
|
 |
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 12.12.2004, 19:41 Titel: |
|
|
Hm also dein Problem hab ich noch nicht so super durchblickt, aber feststellen, ob eine Zahl eine Primzahl ist, kann man so:
Code: |
zahl = 11
IF zahl MOD 2 <> 0 AND zahl MOD 3 <> 0 AND zahl MOD 5 <> 0 AND zahl MOD 7 <> 0 THEN
PRINT "Primzahl !"
ELSE
PRINT "Keine Primzahl !"
END IF
|
_________________
 |
|
Nach oben |
|
 |
Gremlin

Anmeldungsdatum: 12.12.2004 Beiträge: 142 Wohnort: Heinsberg
|
Verfasst am: 12.12.2004, 19:43 Titel: |
|
|
Ich weiß nicht, obs einfacher geht, aber du könntest immer wieder so prüfen:
Code: |
Anz_Teiler = 0
INPUT Zahl
FOR Teiler = 1 to Zahl
IF INT(Zahl / Teiler) = Zahl / Teiler THEN Anz_Teiler = Anz_Teiler + 1
NEXT Teiler
IF Anz_Teiler = 2 THEN
PRINT "Mit";Anz_Teiler;"Teilern ist";Zahl;"eine Primzahl."
ELSE
PRINT "Mit";Anz_Teiler;"Teilern ist";Zahl;"keine Primzahl."
END IF |
Ist jetzt zwar allgemein ein Programm zum Testen, ob es sich bei einer eingegebenen Zahl um eine Primzahl handelt, aber das kannst du hoffentlich zu deinem Nutzen umwandeln
(Zahl durch 1. Primzahl teilen, wenn möglich -> Teiler und neue Zahl wieder versuchen zu Teilen, wenn nicht -> nächste Primzahl suchen)
Roman
edit: ICC ist mir zuvorgekommen; diese Möglichkeit ist mir gar ncith in den Sinn gekommnen, so, wie ichs gepostet hab, hat es mir mein Mathe-Info-Lehrer beigebracht, ich persönlich hätte aber anstatt
IF INT(a/b) = a/b THEN
sondern
IF a MOD b = 0 THEN
genommen, so gibts sicher noch mehr Möglichkeiten _________________ Tja, hier konnte ihre Werbung stehen.
Pech gehabt.  |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 12.12.2004, 19:55 Titel: |
|
|
Hallo
Man muss die Schleife nicht bis zum Wert der zu prüfenden Zahl laufen lassen. Bis zur Wurzel reicht auch schon.
FOR Teiler = 2 TO INT(SQR(zahl))
Gruss
Skilltronic |
|
Nach oben |
|
 |
Gremlin

Anmeldungsdatum: 12.12.2004 Beiträge: 142 Wohnort: Heinsberg
|
Verfasst am: 12.12.2004, 20:01 Titel: |
|
|
Dann muss Anz_Teiler aber von Anfang an auf 1 gesetzt werden, da eine Primzahl sonst nur einen Teiler hätte? _________________ Tja, hier konnte ihre Werbung stehen.
Pech gehabt.  |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 12.12.2004, 20:48 Titel: |
|
|
Habe diese Aufgabe schon einmal ganz früher (1991) mit GW-BASIC gelöst. Siehe
http://beilagen.dreael.ch/QB/PRIMFAKZ.BAS
Musste damals noch mit DOUBLE (#) gelöst werden, da es dort noch kein LONGINT (&) gab, denn sonst könnte man nur Zahlen bis 32767 zerlegen. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Thomas Antoni

Anmeldungsdatum: 12.10.2004 Beiträge: 220 Wohnort: Erlangen
|
Verfasst am: 13.12.2004, 00:56 Titel: Dazu habe ich mir Folgendes für die QB-MonsterFAQ vorgemerkt |
|
|
Dazu habe ich mir Folgendes für die QB-MonsterFAQ vorgemerkt:
Frage deutsch
~~~~~~~~~~~~~~
Wie führe ich eine Primfaktor-Zerlegung durch ?
Ergänzung
-------------
Einen netten in JavaScript realierten Online-Rechner zur Primfaktorzerlegung
findest Du übrigens unter
http://wthlentner.cablenet.de/javascript/primfaktorzerlegung.html
Es gibt sogar eine Deutsche Internetseite, die sich nur den Primzahlen gewidmet
hat, nämlich http://www.primzahlen.de . Dor steht auch eine Facharbeit über
Primzahlen mit 2 QBasic-Programmen steht unter
http://www.primzahlen.de/files/referent/sra/
zur Verfügung.
Antwort 1
~~~~~~~~~
[ von Philipp Schröter (philipp_schroeter@web.de )per Mail, .11.2003 ]
Ich hab ein Programm zur Zerlegung von Zahlen in ihre Primärzahlen geschrieben.
Das Hauptgerüst stammt aus der Bedienungsanleitung meines CASIO-Taschenrechners
cfx9850. ich hab es in abgeänderter Form in QBasic geschrieben. Hier ist es:
Code: |
'***********************************************************************
' PRIMFAK.BAS = Primfaktorzerlegung
' ===========
' b# ist der Primfaktor, wenn teilbar
' e ist der Exponent der Zahl b# oder von 2
'
' (c) Philipp Schröter (philipp_schroeter@web.de), 26.1.2004
'***********************************************************************
10 CLS : INPUT "Zahl (max.15 Stellen):", z#
IF z# = 0 OR z# = 1 OR z# > 999999999999999# THEN GOTO 10
e = 0
GOTO 25
20 e = e + 1: z# = z# / 2
IF z# = 1 THEN
IF e > 1 THEN PRINT 2; "^"; e: e = 0: GOTO 90 ELSE PRINT 2: GOTO 90
END IF
25 IF INT(z# / 2) - (z# / 2) = 0 THEN GOTO 20
'Teilbarkeit durch 2 pruefen
IF e <> 0 THEN IF e > 1 THEN PRINT 2; "^"; e ELSE PRINT 2
e = 0
b# = 3
30 c# = SQR(z#) + 1
40 IF b# - c# >= 0 THEN GOTO 80
'Teilbarkeit durch b# pruefen
IF INT(z# / b#) - (z# / b#) = 0 THEN e = e + 1: z# = z# / b#: GOTO 30
IF e <> 0 THEN
IF e > 1 THEN PRINT b#; "^"; e: e = 0 ELSE PRINT b#: e = 0
END IF
b# = b# + 2: GOTO 40
80 IF b# = z# THEN e = e + 1
IF e <> 0 THEN IF e > 1 THEN PRINT b#; "^"; e ELSE PRINT b#
IF b# = z# THEN GOTO 90
PRINT z#
90 PRINT "Fertig...Wiederholung mit beliebiger Taste...Beenden mit Esc"
DO
k$ = UCASE$(INKEY$)
LOOP UNTIL k$ <> ""
IF k$ = CHR$(27) THEN CLS : END
GOTO 10
|
--------------------------------------------------------------------------------
[/code] _________________ +++ Die beliebte QBasic CD-ROM von QBasic.de - 670 MB QBasic-Stuff mit komfortabler HTML-Oberfläche. Für nur 5 EUR bestellbar auf www.antonis.de/qbcdueb.htm +++ |
|
Nach oben |
|
 |
|