2017-02-09 4 views
2

Hallo Leute, ich habe Code gemacht, um den größten gemeinsamen Teiler von 2 Zahlen zu berechnen.Ich habe Code gemacht, um den größten gemeinsamen Teiler zu berechnen, aber es gibt eine Ausgabe

Es funktioniert gut, aber ich bekomme viele Ausgänge. Ich möchte den größten Output, aber ich weiß nicht, wie ich das beheben kann?

Was mein Code ist dies hier: Sie geben 2 Integer. Die erste ganze Zahl muss größer als die zweite sein. Jetzt überprüfe zuerst die zweite Ganzzahl. Ist es teilbar durch 1, 2, 3, 4, 5, .. Dann Code alle Arbeitsnummern mit der ersten Nummer überprüfen. Am Ende haben wir den größten gemeinsamen Teiler.

Und bevor Code alles tut, überprüfen Sie, ob die zweite Zahl zuerst teilt (falls die zweite die gcd ist).

Nun mein Problem: Lassen Sie uns Eingabe nehmen 36 und 14 werden Mein Code Ausgang

1 
2 

geben Aber wie kann ich vermeiden Code auch alle anderen Arbeitsnummern drucken? Ich möchte nur die größte funktionierende Nummer drucken, aber keine Ahnung, wie ich das in meinem Code umsetzen soll? Ich möchte auch andere Code nicht kopieren, weil ich selbst tat alles bis hier und stolz:

import java.util.Scanner; 

public class Testit{ 

    public static void main(String[] args){ 

     Scanner input = new Scanner(System.in); 
     double x = input.nextDouble(); 
     double y = input.nextDouble(); 
     double first=0; 

     first=x/y; 

     if(first==(int)first){ 
      System.out.println((int)y); 
      return; 
     } 

     else{ 
      for(double i=1; i<x && i<y; i++){ 
       double sum=0; 
       sum=y/i; 

       if(sum==(int)sum){ 
        double temp=0; 
        temp=x/i; 
        if(temp==(int)temp){ 
         System.out.println((int)i); 
        } 
       } 
      } 
     } 
    } 
} 
+0

Nur für die Aufzeichnung ... wie ich Ihnen den ersten Hinweis gab; Überlegen Sie bitte, meine Antwort zu ändern, bitte ... sobald Sie die Levels erreichen. Uups, hast du gerade gemacht ;-) – GhostCat

+0

@GhostCat Hey Katze, ich gebe dir jetzt upvote, weil ich gestern Training gehe, aber jetzt mache ich danke dir auch nochmal für die Antwort meine andere Frage !! – mogulba

+0

Fühlen Sie sich frei, um morgen zu verbessern. Ich habe heute schon die tägliche Kappe getroffen; Auf der anderen Seite: Mach einfach, was für dich funktioniert. Eine Erwiderung ist nicht wirklich wichtig ;-) – GhostCat

Antwort

2

Statt Druck, um das Ergebnis in eine temporäre Variable speichern

double first=0; 
int greatestCommonDivisor = 1; 
... 
       if(temp==(int)temp){ 
        greatestCommonDivisor = Double.valueOf(i).intValue(); 
       } 
... 
System.out.println("Greatest common divisor:" + greatestCommonDivisor); 

Das heißt, es gibt viele Orte, an denen Ihr Algorithmus und Code verbessert werden könnte. Zu Beginn sollten Sie darüber nachdenken, mit der größtmöglichen Anzahl zu beginnen und einfach anzuhalten, wenn Sie den ersten gemeinsamen Teiler gefunden haben (weil das der größte wäre), anstatt alle möglichen Zahlen beginnend mit der kleinsten möglichen Zahl zu durchlaufen. Und Sie sollten sich die Modulo-Operation ansehen und Ganzzahlen statt Doppel für Ihre Werte verwenden.

+0

aber nicht verstehen valueOf? ich schreibe gcd = ((int) i); stattdessen und es funktioniert das gleiche – mogulba

+0

@mogulba Das ist wegen des automatischen Boxens. Wo: Ihr Schleifenzähler * i * sollte in erster Linie vom Typ ** int ** sein. Konzeptionell sollte es nicht unbedingt ein Double sein. Mit anderen Worten: treten Sie zurück und schauen Sie, welche Arten Sie überhaupt verwenden. FInally: GROßBILD wird im Internet als SCREAMING wahrgenommen.Also: RUHE! Tu das nicht. – GhostCat

2

Sie haben Ihren Code zu ändern; zum Beispiel so:

Derzeit wird Ihr Code einfach jedes Mal gedruckt, wenn es eine "Übereinstimmung" findet.

Statt sofort zu drucken, drücken Sie diesen Wert in eine Variable Helfer. Und am Ende; Wenn Ihre Schleife beendet ist, drucken Sie einfach die Variable Helfer Variable!

Dann drucken Sie automatisch die letzte Zahl, die Ihr Algorithmus berechnet und gespeichert hat.

(Ich gebe dir keinen Code hier, nur eine Idee - wie Sie mehr, indem er den Code selbst lernen!)

+0

DANKE ABER KEINEN ANDEREN METHODEN, SO KANN ICH DIESES ABER DANKE DANKEN, UM IHNEN ZU HELFEN :) – mogulba

Verwandte Themen