import Prog1Tools.IOTools;
public class ggTkgV //Name muss gleich Dateinamen sein!!
                  // Berechnet den ggT von zwei Zahlen
		  // nach dem Prinzip von Euklid. Und auch das kgV.  
{                        
  public static void main(String[] args)
  {
   long g ,h,  gein, hein, kgV; 
   g =  IOTools.readLong("Einlesen eines langen g >= 2 zum Test:" );
   h =  IOTools.readLong("Einlesen eines langen h >= 2 zum Test:" );
   System.out.println("   ");
   System.out.println("ggT( " + g + " , " + h + " ) soll ermittelt werden.");
   System.out.println ("   ");
   gein = g;
   hein = h;
   kgV = 0;                              // Initialisierung beendet. 
   while  ((g > 0) & (h > 0) )    // Schleife endet, wenn einer der Werte
                                // gleich 0 ist. Der andere ist der ggT.
                                //
			        // Invariante: Gemeinsame Teiler von
			        // g_0 und h_0 gleich gemeinsame Teiler
			        // von g_l und h_l. 
                                // Quintessenz: Ist g_l=0 dann ist die 
			        // Teilermenge von h_l die Menge der
			        // gemeinsamen Teiler, also h_l der ggT.
			        // Ebenso umgekehrt, bei h_l = 0. 
   {
      if (( g > h) & ( h > 0) )
      { 
      g = g % h;           // Hier kann die 0 auftreten.
      }                     
                          
      if ((0 < g) & (g < h))
      {
       h = h % g;          // Auch hier ist die 0 moeglich. 
      }
  }  
    System.out.println("Der ggT von "+ gein + " und " + hein + 
    " ist entweder g = " + g + "oder  h = " + h);
    if (h == 0)
    { 
    kgV = (gein * hein)/g;
    }
    if ( g == 0)
    {
    kgV = (gein * hein)/ h;
    }
  System.out.println("Das kgV ist " + kgV);
  }
 }     
   
  
