ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
1160
1160
EMPFEHLEN
-
05.02.05 08:46 #1
- Registriert seit
- Aug 2004
- Beiträge
- 213
Hallo allerseits.
Ich hoffe meine Frage ist hier richtig:
Der Größte Gemeinsame Teiler (GGT) zweier Zahlen ist ja bekanntlich die größte Zahl, durch die sich beide ohne Rest Teilen lassen.
Um den GGT Teiler zweier Zahlen bestimmen zu lassen, hab ich folgende Funktion geschrieben (ich wähl jetzt einfach C++, weil das wohl für die meisten lesbar sein wird):
Es wird in der Schleife jeder ganzzahlige Wert größer Null daraif überprüft, ob er durch die beiden Zahlen ohne Rest teilbar ist.PHP-Code:int ggt(int Zahl1,int Zahl2)
{
int x=1;
for (int i = 1; i <= ((Zahl1 < Zahl2) ? Zahl1 : Zahl2); i++)
{
if ((Zahl1 % i == 0) && (Zahl2 % i == 0))
x=i;
}
return x;
}
Meine Frage ist, ob es nicht auch effizientere Wege gibt (ähnlich wie bei den isPrimzahl Funktionen, die Seitenlange Code haben), denn die Funktion hier dauert bei größeren Zahl en schon etwas.
Danke"Nun, diese taktischen Atomwaffen, das ist ja eine bloße Fortsetzung der Artillerie."
"Nehmen Sie die Menschen, wie sie sind, andere gibt's nicht."
"Lieber das halbe Deutschland ganz als das ganze Deutschland halb."
"Ist es nicht schrecklich, dass der menschlichen Klugheit so enge Grenzen gesetzt sind und der menschlichen Dummheit überhaupt keine?"
- Konrad Adenauer
sprachtherapie göttingen
-
Hi,
normalerweise macht man das rekursiv mit der Modulo-Funktion:GrußPHP-Code:public int ggT(int a, int b) {
if (a == b || b == 0 ) return a;
return ggT(b, a % b);
}
.
-
05.02.05 14:00 #3
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Normalerwerise macht man das so:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
/* * Created on 05.02.2005@14:00:13 * * TODO Licence info */ package de.tutorials; /** * @author Administrator * * TODO Explain me */ public class GCDTest { public static void main(String[] args) { System.out.println(gcd(21, 21)); } /** * @param i * @param j */ private static int gcd(int i, int j) { if (j == 0) return i; else return gcd(j, i % j); } }
Mit Datics "Optimierung" if (a == b || b == 0 ) spart man sich im Fall a == b einen rekusiven Aufruf.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
05.02.05 14:06 #4
- Registriert seit
- Aug 2004
- Beiträge
- 213
Okay, vielen Dank.
"Nun, diese taktischen Atomwaffen, das ist ja eine bloße Fortsetzung der Artillerie."
"Nehmen Sie die Menschen, wie sie sind, andere gibt's nicht."
"Lieber das halbe Deutschland ganz als das ganze Deutschland halb."
"Ist es nicht schrecklich, dass der menschlichen Klugheit so enge Grenzen gesetzt sind und der menschlichen Dummheit überhaupt keine?"
- Konrad Adenauer
sprachtherapie göttingen
Ähnliche Themen
-
Effizienz Frage
Von Der Wolf im Forum C/C++Antworten: 5Letzter Beitrag: 29.08.10, 18:25 -
[MySQL] Geschwindigkeit Lesbarkeit Effizienz
Von chmee im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 21.09.09, 21:36 -
Mal wieder Frage zur verbesserung der Effizienz
Von NoGFX im Forum Flash PlattformAntworten: 2Letzter Beitrag: 08.05.07, 16:12 -
Frage zur Effizienz
Von kevkev im Forum Coders TalkAntworten: 5Letzter Beitrag: 24.04.06, 23:09 -
Formularverarbeitung Effizienz steigern
Von sirvival im Forum PHPAntworten: 2Letzter Beitrag: 28.02.06, 10:56





Zitieren

Login





