AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

x*y=z Lösungsmenge

Ein Thema von Neutral General · begonnen am 9. Dez 2006 · letzter Beitrag vom 10. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

x*y=z Lösungsmenge

  Alt 9. Dez 2006, 12:59
Hi,

Ich habe eine Zahl z (Integer, also Element Z) gegeben und will alle ganzen Zahlen x,y ausrechnen sodass gilt x*y = z.
Wie kann ich das mit Delphi ausrechnen ?

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: x*y=z Lösungsmenge

  Alt 9. Dez 2006, 13:04
Wohl nur manuell ( Annahme y > x sont x <-> y
Delphi-Quellcode:
for y := z downto x do
  if z mod y = 0 then x:= z/y;
...
[Edit: to durch downto ersett]
Markus Kinzler
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#3

Re: x*y=z Lösungsmenge

  Alt 9. Dez 2006, 13:06
Hi,
überleg dir doch einfach mal wie man das machen könnte. Einfachster Weg, du setzt alle Ganzzahlen ein (kleiner Tipp vorab, es sind ein bisschen viele). Also kommst du sicher schnell auf die Idee, dass kein Faktor größer als Z sein darf und irgendwie ist Z und 1 immer eine Möglichkeit.
Die restlichen Zahlen sind also? Kannst mal überlegen welche Zahlen du maximal betrachten musst, sind natürlich bei weitem nicht alle zwischen 0 und z!

Ja, und wie man eine Schleife programmiert und einsetzt, das weißt du sicherlich.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#4

Re: x*y=z Lösungsmenge

  Alt 9. Dez 2006, 13:07
Ich wuerde mit Primzahlzerlegung von z ansetzen - ginge IMO schneller, oder wenigstens mathematisch eleganter

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#5

Re: x*y=z Lösungsmenge

  Alt 9. Dez 2006, 15:27
und die Primkfaktozerlegung macht man, indem man alle integer der Menge [2;z/2] nimmt und überprüft, ob z mod diese Zahl = 0 ist

dann haste auch direckt die andere Zahl, die du ja dann nichtmehr überprüfen musst

oder noch besser:

bei ein einfangen und wenn z mod x = 0 ist x und z/x in deinem arry oder was auch immer speichern (array of booleans wäre da gut) und zusätzlich das z/x in iene variable speichern, weil sobald du mit x an die Zahl angelangt bist, brauchst du sie nicht mehr überprüfen und bist fertig
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#6

Re: x*y=z Lösungsmenge

  Alt 9. Dez 2006, 16:02
Zitat von dino:
bei ein einfangen und wenn z mod x = 0 ist x und z/x in deinem arry oder was auch immer speichern (array of booleans wäre da gut) und zusätzlich das z/x in iene variable speichern, weil sobald du mit x an die Zahl angelangt bist, brauchst du sie nicht mehr überprüfen und bist fertig
Entschuldigung: Kannst Du das nochmal formulieren und mit Kommata versehen - Subjekt/Prädikat/Objekt, Nebensätze richtig beginnen und beenden, dazu Tippfehler korrigieren? Ich habe bei diesem Satz überhaupt nichts verstanden. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#7

Re: x*y=z Lösungsmenge

  Alt 9. Dez 2006, 16:11
Zitat von dino:
[2;z/2]
[2;Sqrt(z)]
In der Code-Lib gibt es eine optimierte Version dieses Probedivision-Verfahrens, daneben existieren natürlich auch noch effizientere Verfahren.

[edit]Whoops [/edit]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Ratte

Registriert seit: 12. Dez 2003
Ort: Erfurt
345 Beiträge
 
Delphi 2005 Personal
 
#8

Re: x*y=z Lösungsmenge

  Alt 9. Dez 2006, 16:12
Zitat von Khabarakh:
Zitat von dino:
[2;z/2]
[2;Sqrt(2)]
[2;SQrt(z)] !!!!!
mfg,
ratte
Schiffsratte der U.S.S. Delphipraxis, Laderaum 4538
BUSH:= TTerminator.create;
  Mit Zitat antworten Zitat
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#9

Re: x*y=z Lösungsmenge

  Alt 9. Dez 2006, 16:19
Zitat von Jürgen Thomas:
Zitat von dino:
bei ein einfangen und wenn z mod x = 0 ist x und z/x in deinem arry oder was auch immer speichern (array of booleans wäre da gut) und zusätzlich das z/x in iene variable speichern, weil sobald du mit x an die Zahl angelangt bist, brauchst du sie nicht mehr überprüfen und bist fertig
ups

also:

var i,i2:integer
var drin:array[1..z] of boolean

i:=1

repeat

if z mod i = 0 then begin drin[i]:= true; drin[z/i]:= true; i2:=z/i end;

inc(i)

until i>=i2

so klar?
  Mit Zitat antworten Zitat
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#10

Re: x*y=z Lösungsmenge

  Alt 9. Dez 2006, 16:20
meins ist mehr ne skizze als ein Programm.

und perfeckt ist es auch nicht, soll nur meinen, dass man da auch selbst drauf kommen kann
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz