# ggt berechnen



## Blacksea (5. Nov 2006)

Hallööchen, 

so spät und ich muss noch ein Projekt fertig stellen. Brauche unbedingt jemanden, der ein Auge auf dem Code wirft, wahrscheinlich nur was kleines. 

Ich habe ja schon herausgefunden, wie ich den Rest ermitteln kann. Nur wie kann ich den vorherigen Rest ausgeben lassen also darauf zugreifen??? (Laut Taschenrechner die Zahl 24) 

public class MiniProjekt11 

{ public static void main (String [] args) 

    // hier die Lösung implementieren 
    { 

     int guthaben = 360, kontonr = 48; 
     int drest; 

     do    { 
         drest = guthaben % kontonr; 
         guthaben = kontonr; 
         kontonr = drest; 
        } while (drest != 0); 

        System.out.println ("Der groeste lautet " + 
    }     

}


----------



## Wildcard (5. Nov 2006)

Ich versteh zwar die Frage nicht, aber für den Rest verwendet man den Modulo Operator:

```
int rest = 360%48 //ergebnis: 24
```


----------



## Blacksea (5. Nov 2006)

Wildcard hat gesagt.:
			
		

> Ich versteh zwar die Frage nicht, aber für den Rest verwendet man den Modulo Operator:
> 
> ```
> int rest = 360%48 //ergebnis: 24
> ```



HI, 

soll ja am Ende so aussehen

public class MiniProjekt111

{ public static void main (String [] args)

	// hier die Lösung implementieren
	{

  	  int guthaben = 1000, kontonr = 1;
	  int rest = guthaben % kontonr;

		System.out.println("groeste " + rest);
	}	

}

--------

Also ich bekomme 0 raus, wenn ich das so mache wie du es meinst. Viele hier im Forum haben Return benutzt aber das geht irgendwie bei mir nicht (eingefügt im ersten Code)


----------



## Wildcard (5. Nov 2006)

Bei der Division bleibt ja auch kein Rest.
Versuch doch bitte deine Frage ordentlich zu formulieren. Ich weiß nicht was du eigentlich haben willst.


----------



## Wildcard (5. Nov 2006)

Aus deinem Text werde ich zwar immer noch nicht schlau, aber deinem Titel nach zu urteilen willst du wohl den größten gemeinsamen Teiler zweier Zahlen berechnen.
Hier ein effizienter Algorithmus:
http://de.wikipedia.org/wiki/Steinscher_Algorithmus


----------



## Blacksea (5. Nov 2006)

Wildcard hat gesagt.:
			
		

> Aus deinem Text werde ich zwar immer noch nicht schlau, aber deinem Titel nach zu urteilen willst du wohl den größten gemeinsamen Teiler zweier Zahlen berechnen.
> Hier ein effizienter Algorithmus:
> http://de.wikipedia.org/wiki/Steinscher_Algorithmus



ja hast ja eigentlich recht - war auch etwas spät gestern nacht. Ich wollte den gemeinsamen grössten Teiler von 2 Zahlen herausfinden. Hier wäre es ja für 1000 und 1 die 1 richtig. Diese funktion solll natürilch auch für andere Zahlen funktionieren.


----------



## Wildcard (5. Nov 2006)

```
public class Stein
{
    public static void main(String[] args)
    {
        System.out.println(ggt(50,15));
    }

    private static long ggt(long a, long b)
    {
        int k = 0;
        long t = 0;
        while(a%2==0 && b%2==0)
        {
            a>>=1;
            b>>=1;
            k++;
        }
        if(a%2!=0)
            t=-b;
        else
            t=a;
        while(t != 0)
        {
            while(t%2==0)
                t>>=1;
            if(t > 0)
                a=t;
            else
                b=-t;
            t=a-b;
        }
        return a<<k;
    }
}
```


----------

