Wie finde ich den GGT von drei zahlen in einer einzigen Methode
Ich habe, um sicherzustellen, dass der GGT von 3 zahlen ist nicht größer, als 1.
Hier ist der code, den ich bisher für die Methode:
private int greatestCommonFactor(int a, int b, int c)
{
for(int n = 0; n <= number; n++)
{
if()
}
return 1;
}
den return 1
war schon da, als ich anfing zu arbeiten auf das Labor. Wie kann ich sicherstellen, dass der GCD ist nicht mehr als 1? Und wieder alle drei Ganzzahlen?
Hier ist der Rest von dem code, wenn es hilft, herauszufinden, was getan werden muss:
import static java.lang.System.*;
public class Triples
{
private int number;
public Triples()
{
this(0);
}
public Triples(int num)
{
number = num;
}
public void setNum(int num)
{
number = num;
}
private int greatestCommonFactor(int a, int b, int c)
{
for(int n = 0; n <= number; n++)
{
if()
}
return 1;
}
public String toString()
{
String output="";
int max = number;
for(a = 1; a <= max; a++)
{
for(b = a +1; b <= max; b++)
{
for(c = b + 1; c <= max; c++)
{
if(Math.pow(a, 2)+ Math.pow(b, 2)== Math.pow(c, 2))
{
if((a%2==1 && b%2==0)|| (a%2==0 && b%2==1))
}
}
}
}
return output+"\n";
}
}
UPDATE
Hier ist meine neue Codierung für das gleiche Labor:
import static java.lang.System.*;
public class Triples
{
private int number;
public Triples()
{
this(0);
}
public Triples(int num)
{
number = num;
}
public void setNum(int num)
{
number = num;
}
private int greatestCommonFactor(int a, int b, int c)
{
for(int n = 0; n <= number; n++)
{
int max = number;
for(a = 1; a <= max; a++)
{
a = n;
for(b = a +1; b <= max; b++)
{
b =n;
for(c = b + 1; c <= max; c++)
{
c = n;
if(Math.pow(a, 2)+ Math.pow(b, 2)== Math.pow(c, 2))
{
if((a%2==1 && b%2==0)|| (a%2==0 && b%2==1))
{
if(a%2<=1 && b%2<=1 && c%2<=1)
{
return 1;
}
}
}
}
}
}
}
return 1;
}
public String toString()
{
String output="";
output = greatestCommonFactor(a, b, c);
return output+"\n";
}
}
- Was meinen Sie mit "return alle drei ganzen zahlen"?
- int Zeile
private int greatestCommonFactor(int a, int b, int c)
- Hier ist ein link zu einem google-docs-version der lab-Blatt, wenn es hilft: docs.google.com/open?id=0B_ifaCiEZgtcX08tbW1jNThZZmM
- Ich denke, das ist, was die Frage impliziert : Du hast zu finden, der GCD von a, b und c aus. 1 ist eine 'Standard', weil 1 ist definitiv ein Faktor und die Funktion muss int zurückgeben. Du hast den code zu schreiben für die Bestimmung des GCD und geben Sie den code platziert werden soll, bevor 'return 1;'
- ist nicht mein code, bevor die
return 1;
so wie es da steht? - Nicht, dass etwas zu tun? Tut es kompilieren überhaupt?
- noch nicht, ich habe all die anderen Bedingungen, die erfüllt sein muss für eine Pythagoreische Tripel, um wahr zu sein in meiner toString Methode und versuche nur, um herauszufinden, die getGCD Methode für jetzt
- Warum wollen Sie setzen, dass in der toString(). getGCD() müsste die Logik für die Bestimmung des GCD. Ist es nicht? Die Organisation des Codes nicht korrekt Aussehen.
- Ich zog den code, die derzeit in der toString() nur vorübergehend zu verschieben, bis ich den GCD selbst gesorgt. Haben Sie getroffen, einen Blick auf die google docs-Datei, die ich aufgeführt in einem Kommentar oben? Innerhalb des Dokuments wird ein "Algorithmus helfen", dass ich orientiere mein setup aus
- Es gibt jetzt eine neue version der code geändert werden, um den Boden meiner OP
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Euklid-Algorithmus zur Berechnung des GCD von
a
undb
. Das Ergebnis nennend
. Dann wird der GCD vona
,b
, undc
ist der GCD vonc
undd
; für die, die Sie verwenden können, Euklid-Algorithmus wieder.Hier ist ein brute-force-Weg, wenn Sie kümmern sich nicht um Effizienz:
Erklärung:
(a, b, c)
. Jede Zahl, die größer ist als die definitiv nicht einem GCD von allen 3.n = limit
stattn = 0
und zähle rückwärts.(a, b, c)
muss die GCD.n
mit (verweisen auf meinen code) und dann, wenn, wenn sagenn%2==1
dann könnte ich zuordnena
aber dann bin ich stecken geblieben, wie die anderen Variablen zuweisen