# Java code kleinster gemeinsamer Vielfacher



## manu0308 (13. Dez 2015)

Hey Leute, ich brauche dringend Hilfe!
Kann mir jemand den Java code für den kgv schreiben, das ist noch etwas zu hoch für mich (muss ich gestehen) brauch das aber.. Ich bin total am verzweifeln und komme nicht weiter 
Vielen Dank im Vorraus


----------



## Flown (13. Dez 2015)

Du hast wirklich nicht den Anstand vorher Google zu befragen? Erster Treffer gleich das, was du benötigst.


----------



## manu0308 (13. Dez 2015)

Ich habe überall nachgeschaut und nichts gefunden..kommt immer was über den ggT :/


----------



## Flown (13. Dez 2015)

Du kannst den KGV nur effektiv über ggT berechnen, aber wenn du auch lesen würdest was in diversen Artikel (Wikipedia ist ein heißer Tipp) steht, dann wüßtest du das auch.

Grundsätzlich ist das hier ein Anfängerforum und keine Jobbörse. Wenn du ein Problem hast, dann bitte stell konkrete Fragen. Das heißt du musst auch Eigeninitiative zeigen!

Wenns schneller gehen soll - so wie du es ursprünglich wolltest - gibt es eine Jobbörse als Unterforum. Hier stellst du dann deine Anfrage und auch den Betrag, den du gerne dafür bezahlen würdest, rein.
Wenn du Glück hast findet sich auch wer.

Aber mal im Ernst diese "Aufgabe" ist in 2 Minuten erledigt, also kannst du dich auch hinsetzen und das selbst lösen. Ich geb dir gerne Hilfestellung.

Also was solls sein?


----------



## manu0308 (13. Dez 2015)

Naja, das ist mir schon klar. Ich lass es dann lieber. Ich kann leider keine konkrete Frage stellen, da ich einfach nicht weiß wo meine Fehler sind

Trotzdem, vielen Dank


----------



## Flown (13. Dez 2015)

Naja wie würdest du anfangen?

Die Formel lautet: 
	

	
	
		
		

		
			





 . Wenn man das dann umformt, kommst du auf den kgv (die beiden Striche bedeuten den Betrag der Multiplikation - mit `Math.abs(...)` macht man das).

So jetzt gehen wir mal an den ggT. Dieser ist sehr gut im Euklidischen Algorithmus beschrieben: HIER.


----------



## manu0308 (13. Dez 2015)

okay Moment, ich gehe das alles jetzt noch einmal durch..wäre es denn in Ordnung wenn ich es nochmal versuche und du mir dann meine Fehler verbesserst? Zu dem ggT habe ich auch schon so einiges,  aber auch  immer wieder kleine Fehler drin


----------



## Flown (13. Dez 2015)

Na klar für das ist das Forum auch da.


----------



## JStein52 (13. Dez 2015)

Und falls du noch irgendwo hängst:


```
private int ggt(int a, int b) {
        while(true)
        {
            a = a % b;
            if(a == 0) return b;
            b = b % a;
            if(b == 0) return a;
        }
}

private int kgv(int a, int b) {
        if(a == 0 || b == 0) return 1;
        return Math.abs(a*b)/ggt(a,b);
}
```


----------



## manu0308 (13. Dez 2015)

Vielen vielen dank. Das hat mir auch schon einen Überblick gegeben. ich habe das jetzt so gemacht


```
import java.util.Scanner;

public class KGV {  
    private static int Euclid(int a, int b) {
        if(b==0)
            return a;
        else
            return Euclid(b, a%b);
    }
  
    public static void main(String[] args) {
        int a,b;
        Scanner in = new Scanner(System.in);
      
        System.out.println("Trage die erste Zahl ein: ");
        a = in.nextInt();      
        System.out.println("Trage die zweite Zahl ein: ");
        b = in.nextInt();
      
        if(a==0 || b==0) {
            System.out.println("Fehler! a und b dürfen keine Null sein!");
        }
        else {
            System.out.println("Das Ergebnis ist: "+ a*b/(Euclid(a,b)));
        }
        in.close();      
        }
    }
```


----------



## manu0308 (13. Dez 2015)

aber das Programm sollte als Ergebnis diese Ausgabe erzeugen:

1 2 3 4 5 6 7 8 9 10
2 2 6 4 10 6 14 8 18 10
3 6 3 12 15 6 21 24 9 30
4 4 12 4 20 12 28 8 36 20
5 10 15 20 5 30 35 40 45 10
6 6 6 12 30 6 42 24 18 30
7 14 21 28 35 42 7 56 63 70
8 8 24 8 40 24 56 8 72 40
9 18 9 36 45 18 63 72 9 90
10 10 30 20 10 30 70 40 90 10

könntet ihr mir nur einen Tipp geben wie ich vorgehen sollte?


----------



## Flown (14. Dez 2015)

Naja das funktioniert mit geschachtelten Schleifen. Aber zuerst solltest du dir eine Methode anlegen die dir `a*b/euclid(a, b)` ausrechnet und diese auch kgv nennen.

So jetzt mal ein PSEUDOCODE:

```
for(i... 1 to 10) {
  print(i + " ");
}
println();
for(i... 1 until 10) {
  for(j... 0 until 10) {
    if(j eq 0) print(i+1 + " ");
    else print(kgv(i+1, j+1) + " ");
  }
  println();
}
```


----------



## manu0308 (14. Dez 2015)

Vielen vielen Dank  jetzt ist mir das ganze klar


----------

