| Autor |
Beitrag |
furtuna
Hält's aus hier
Beiträge: 2
|
Verfasst: So 11.11.07 20:59
hallo leute, ich bin ein anfänger und komme bei einer aufgabe einfach nicht mehr weiter:
Der User soll eine Zahl eingeben z.B 36 und das Programm liefert eine Kombination von Primzahlen, deren Produkt der eingegebenen Zahl entspricht.
So eine Grobe idee hab ich schon aber ich würd mich freuen, wenn mir jemand den Code dieses Programms zeigen könnte, weil das mir momentan am meisten helfen wird.
Danke im Vorraus!!
|
|
dummzeuch
      
Beiträge: 593
Erhaltene Danke: 5
Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
|
Verfasst: So 11.11.07 21:04
furtuna hat folgendes geschrieben: | hallo leute, ich bin ein anfänger und komme bei einer aufgabe einfach nicht mehr weiter:
Der User soll eine Zahl eingeben z.B 36 und das Programm liefert eine Kombination von Primzahlen, deren Produkt der eingegebenen Zahl entspricht.
So eine Grobe idee hab ich schon aber ich würd mich freuen, wenn mir jemand den Code dieses Programms zeigen könnte, weil das mir momentan am meisten helfen wird.
Danke im Vorraus!! |
Grundregel hier: Hausaufgaben sollen selbst gemacht werden.
Die Loesung ist doch recht einfach:
1. Primzahlen ermitteln bis sqrt(zahl)
2. feststellen, ob die Zahl jeweils dadurch teilbar ist
3. Naja, 2. muss natuerlich auch ermitteln, ob die zahl mehrfach durch die jeweilige Primzahl teilbar ist.
Das liesse sich dann noch optimieren, aber warum sollte man?
twm
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: So 11.11.07 21:04
Hallo und  in der Entwickler-Ecke!
Wie sehen denn deine Ansätze aus? Dann kann man darauf ja aufbauen  .
_________________ We are, we were and will not be.
|
|
furtuna 
Hält's aus hier
Beiträge: 2
|
Verfasst: So 11.11.07 21:17
also vielleicht ist mein problem nicht richtig rübergekommen: ich kann schon ein programm schreiben, dass die primzahlen ermittelt, ja ja nicht zu glauben
Aber die Aufgabe will, das das Programm Die Kleinste Kombination von Primzahlen ausgibt.
Ich könnt ja eine Schleife schreiben, das alle möglichkeiten ausprobiert, aber sobald mehr als zwei primzahlen benötigt werden, wird die laufzeit kein ende nehmen. Daher suche ich eigentlich einen guten Algorithmus der das problem eleganter löst. Ich hoffe ich erwarte nicht zuviel, ich würd mich aber freuen,wenn mir jemand hilfestellung geben könnte. Danke!!
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: So 11.11.07 21:34
Das Problem verstehe ich jetzt nicht. Die Primfaktorzerlegung (und die suchst du ja scheinbar) ist eindeutig. Wenn du eine Liste von Primzahlen p1...pn gefunden hast, für die das Produkt die gesuchte Zahl ist, dann hast du auch die kleinste Zerlegung gefunden.
Ich kann dir das jetzt auf Anhieb nicht beweisen (war iirc auch etwas komplizierter), aber das ist so 
_________________ We are, we were and will not be.
|
|
Logikmensch
      
Beiträge: 390
Win XP
Delphi 2007 Prof., XE2, XE5
|
Verfasst: Mo 12.11.07 11:03
Stimmt, Gausi. Ich sehe es genauso.
Vielleicht sollten wir Fortunas Beispiel der 36 nochmal aufgreifen. Also, von Hand mache ich folgendes:
x <= 36
p <= 2 (kleinste Primzahl)
Schleife:
ist x durch p teilbar?
nein --> Erhöhe p, bis auf nächste Primzahl (also von 2 auf 3, von 3 auf 5 etc.)
ja --> Gebe p aus, teile x durch p und nimm neues x, um zu 'Schleife' zu springen
Das ganze wiederhole, bis x=1 geworden ist.
Also kriegst Du:
2 (x wird 18 )
2 (x wird 9)
3 (x wird 3)
3 (x wird 1)
Fääättiisch, also 2*2*3*3 = 36
Wo genau ist da eine Endlosschleife?
_________________ Es gibt keine Probleme - nur Lösungen!
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mo 12.11.07 11:12
Richtig, so kann man das machen. Die Frage, die man sich aber zunächst mal stellen kann ist: Gibt es neben der so gefundenen Zerlegung auch eine andere, die evtl. mit weniger Faktoren auskommt? Z.B. nicht 2*2*3*3, sondern 5*7 (was ja fast hinkommt).
Wenn es sowas gäbe, hätte man in der Tat ein Problem. Aber zum Glück gibt es das ja nicht 
_________________ We are, we were and will not be.
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 12.11.07 11:40
 Gausi!
Verwirr die Leute doch nicht. Um es nochmal ganz deutlich zu sagen: Eine Primfaktorzerlegung ist eindeutig. Aber das wollte Gausi mit seinem letzten Satz auch sagen.
|
|
zongo-joe
      
Beiträge: 134
win xp prof
D3, D4, D7
|
Verfasst: Mo 12.11.07 11:49
scheint mir eher ein Problem der verkorksten Aufgabenstellung zu sein.
Poste die doch mal, vielleicht hilft das weiter.
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mo 12.11.07 12:12
@jasocul: Das habe ich ja auch schon weiter oben gesagt  . Es scheint hier aber wirklich das Problem die Aufgabenstellung zu sein, denn sowas
furtuna hat folgendes geschrieben: | | Aber die Aufgabe will, das das Programm Die Kleinste Kombination von Primzahlen ausgibt. |
macht ja nun nicht wirklich unbedingt Sinn.
_________________ We are, we were and will not be.
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 12.11.07 12:42
Das hatte ich überlesen.
|
|