Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   kleinster gemeinsamer Teiler (https://www.delphipraxis.net/113194-kleinster-gemeinsamer-teiler.html)

Austrianer 4. Mai 2008 12:20


kleinster gemeinsamer Teiler
 
hy leute!!!
wollte fragen ob ihr wisst wie ich den kgv(kleinster gemeinsamer Teiler)programmieren kann...
zB.:von 60 und 45
mfg patrick

inherited 4. Mai 2008 12:23

Re: kleinster gemeinsamer Teiler
 
Delphi-Quellcode:
function kleinstergemeinsamerteiler(a, b: Integer): Integer;
begin
  result := 1;
end;
;)
Aufruf:
Delphi-Quellcode:
var i: Integer;
[...]
  i:=kleinstergemeinsamerteiler(60, 45);

Valle 4. Mai 2008 12:29

Re: kleinster gemeinsamer Teiler
 
Ich gehe mal davon aus, dass du das kleinste gemeinsame Vielfache suchst. Ich habe hier noch einen Python-Code rumliegen, ich denke aber kaum, dass ich den sinnvoll in Delphi übersetzen kann. Habe schon seit 2 Jahren kein Delphi mehr... :cyclops:

Code:
def kgv(a, b):
    return abs(a * b) / ggt(a, b)

def ggt(a, b):
    while b != 0:
        h = a % b
        a = b
        b = h
    return a
Vielleicht kannst du damit was anfangen?

Mit freundlichen Grüßen,

Valle

himitsu 4. Mai 2008 12:31

Re: kleinster gemeinsamer Teiler
 
sinnvoll wäre wohl etwas davon:
"größter gemeinsamer Teiler" oder "kleinstes gemeinsames Vielfaches"

und am Einfachsten ist (wie schon gezeigt), in einer Schleife alle möglichen (logischen) "Teiler" durchzutesten.

Delphi-Quellcode:
function GGT(a, b: Integer): Integer;
begin
  // größten lögischen Teiler wählen
  if Abs(a) < Abs(b) then Result := Abs(a)
  else Result := Abs(b);
  // schleife zum durchtesten
  while Result > 1 do
  begin
    // abbrechen wenn Teiler gefunden
    if (a mod Result = 0) and (b mod Result = 0) then
      break;
    Dec(Result);
  end;
end;
Delphi-Quellcode:
function GGT(a, b: Integer): Integer;
begin
  // größten lögischen Teiler wählen
  if Abs(a) < Abs(b) then Result := Abs(a)
  else Result := Abs(b);
  // schleife zum durchtesten
  while (Result > 1) and ((a mod Result <> 0) or (b mod Result <> 0)) do
    Dec(Result);
end;
Delphi-Quellcode:
function GGT(a, b: Integer): Integer;
begin
  // größten lögischen Teiler wählen
  if Abs(a) < Abs(b) then Result := Abs(a)
  else Result := Abs(b);
  // schleife zum durchtesten
  while (Result > 1) and ((a mod Result <> 0) or (b mod Result <> 0)) do
    Result := Result div 2;
end;

toms 4. Mai 2008 12:47

Re: kleinster gemeinsamer Teiler
 
GGT & KGV

mkinzler 4. Mai 2008 12:53

Re: kleinster gemeinsamer Teiler
 
Der Kleinste gemeinsame Teiler wäre wohl 1 :mrgreen:

Sharky 4. Mai 2008 12:59

Re: kleinster gemeinsamer Teiler
 
Hai Austrianer,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS" :hello:

Eventuell ist auch dies hier noch interessant.

rawsoul 4. Mai 2008 13:11

Re: kleinster gemeinsamer Teiler
 
Vielleicht ist auch der größte gemeinsame Teiler gemeint? oO
Delphi-Quellcode:
function ggt(i, j:integer):integer;
begin
  i := abs(i);
  j := abs(j);
  if ((i = 0) or (j = 0)) then
  begin
    result := 1;
    exit;
  end;
  while i <> j do
    if i > j then
      i := i - j
      else
        j := j - i;
  result := i;
end;
//Edit: Habe die 0 vernachlässigt :oops:
//Re-Edit: Und durchs "Verbessern" Javasyntax reingewurstet :wall:

Austrianer 4. Mai 2008 18:30

Re: kleinster gemeinsamer Teiler
 
hey guys..
danke jt kapier ichs..
wollts zwar ohne a function probieren geht aber so auch.
mfg

tomsel 4. Mai 2008 19:33

Re: kleinster gemeinsamer Teiler
 
inherited: *rofl* :cheer:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 Uhr.
Seite 1 von 2  1 2      

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