Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
timpa
Anmeldungsdatum: 19.12.2011 Beiträge: 5
|
Verfasst am: 19.12.2011, 16:54 Titel: Algorithmus und Struktogramm für Primfaktorzerlegung |
|
|
Liebe Forenmitglieder!
Ich bin erst neu hier und habe auch gleich eine frage. Ich habe dieses Jahr neu mit Informatik begonnen. So richtig bin ich noch nicht dahinter gekommen wie ich Algorithmen programmiere.
Meine frage ist nun wie das strucktogram und die dazugehörige syntax für qbasic aussieht.:
Ein Algorithmus der eine natürliche Zahl einliest, sie in ein Produkt von Primzahlen zerlegt und diese angibt.
Wäre nett wenn mir da jemand ein wenig hilfe leisten könnte!
Danke schonmal im vorraus!
Editiert durch Moderator: Ursprünglicher Titel "Algotithmus für Qbasic" ersetzt. (Sebastian) |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 19.12.2011, 17:06 Titel: |
|
|
Vom Thema her würde das in den Bereich "Allgemeine Fragen zu QBasic" gehören.
Wenn ich dir den Algorithmus hier aufschreibe, wird dir das langfristig nichts bringen, deswegen versuch ich das hier einmal zu entwickeln. Bevor du so etwas im Computer umsetzen kannst, musst du wissen, welche einzelnen Schritte dabei ablaufen sollen. Also:
Wenn du eine natürliche Zahl (per Hand) in seine Primfaktoren zerlegen sollst, welche Schritte wirst du da nacheinander abarbeiten? _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
erdock
Anmeldungsdatum: 19.12.2011 Beiträge: 4
|
|
Nach oben |
|
|
Input
Anmeldungsdatum: 28.07.2014 Beiträge: 59
|
Verfasst am: 23.08.2014, 21:39 Titel: |
|
|
Hab das mal etwa so gemacht:
Code: |
INPUT "Zahl";x
cls:y=2:z=2
DO
IF x<y*z THEN y=y+1:z=2
IF x/y=FIX(z) THEN PRINT y;:x=x/y:y=2:z=2
IF x/y=1 THEN PRINT y;:end
z=z+1
LOOP
|
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 23.08.2014, 22:39 Titel: |
|
|
Code: | IF x/y=FIX(z) THEN [...] |
Wozu das FIX? z ist doch immer ein INTEGER. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
HorstD
Anmeldungsdatum: 01.11.2007 Beiträge: 107
|
Verfasst am: 23.08.2014, 23:32 Titel: |
|
|
UngeDIMmt ist z ein SINGLE. |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 23.08.2014, 23:58 Titel: |
|
|
Was ich eigentlich meinte:
Wenn nur z=2 und z=z+1 verwendet wird, wo brauche ich da ein FIX? _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Input
Anmeldungsdatum: 28.07.2014 Beiträge: 59
|
Verfasst am: 24.08.2014, 06:11 Titel: |
|
|
Ja: es geht auch ohne, sorry. |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 24.08.2014, 14:33 Titel: |
|
|
Dieses Problem löste ich bereits ganz früher auf dem Commodore 64 ...
Sonst als Tipps von mir:
- Am besten Longint verwenden, Du brauchst definitiv keine Fliesskommazahlen. FreeBasic: Dort sogar Unsigned Integer möglich
- Ein wichtiger Freund und Helfer: MOD (Divisionsrest) und "\" -> macht INT(), FIX() usw. allesamt ebenfalls überflüssig (alles für Fliesskommazahlen bestimmt)
- Von der Optimierung her: Primzahl 2 separat, anschliessend alle ungeraden, also 3, 5, 7 usw. durchgehen
- Abbruchbedingung: Sobald auszuprobierender Faktor grösser als der Rest, dann Ende. => Du musst also nur bis SQR(Zahl) durchprobieren _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
|