Java code kleinster gemeinsamer Vielfacher

manu0308

Mitglied
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

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

Flown

Administrator
Mitarbeiter
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?
 
Zuletzt bearbeitet:

manu0308

Mitglied
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

Administrator
Mitarbeiter
Naja wie würdest du anfangen?

Die Formel lautet:
5d8094d5f2ce70d693f1961df0c0c246.png
. 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.
 
Zuletzt bearbeitet:

manu0308

Mitglied
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
 

JStein52

Top Contributor
Und falls du noch irgendwo hängst:

Java:
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

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

Java:
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();      
        }
    }
 
Zuletzt bearbeitet von einem Moderator:

manu0308

Mitglied
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

Administrator
Mitarbeiter
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:
Code:
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();
}
 

Neue Themen


Oben