Teilerermittlung

MaviFilms

Mitglied
Hallo Leute,
hab da mal wieder eine Frage?

Ich muss den Teiler von einer Zahl ermitteln. Ich habe mir schon sozusagen einen"Algorithmus" ausgedacht, es würde auch funktionieren aber leider gibt es dort ein Problem.
Besser ausgedrückt: bei der if-Anweisung in der Methode "hatNochElement()" ist der Zustand nicht definiert, wenn der teiler, der berechnet wird nicht == zahl ist.
Hab's unten im Code auskommentiert. Wäre nett wenn ihr mir helfen könntet :)


Java:
	private int zahl;
	private int aktuellerTeiler = 1;

	public Teiler(int zahl)
	{
		this.zahl = zahl;
	}


	@Override
	public boolean hatNochElement() {
      //Immer wenn der aktuelleTeiler bei einer Zahl ist, die * 2 = zahl ergibt soll es true ausgeben
		int teiler = zahl/aktuellerTeiler*2;

//Hab den Debugger mal eingeschaltet und gemerkt, dass wenn eine Zahl kommt die nicht "zahl" ergibt, //abgebrochen wird

		if(aktuellerTeiler == 1)
			return true;
		else if(zahl == teiler)
			return true;
		else
			return false;
	}

	@Override
	public Object naechstesElement() {
		aktuellerTeiler++;
		return aktuellerTeiler-1;
	}
 
Zuletzt bearbeitet:

Spin

Top Contributor
Beispiel für größter gemeinsamer Teiler:

Java:
public static int ggT(int a, int b){
      int ggT = 1;
      int r;
      do{
         r = a%b;
         a = b;
         b = r;
      } while(b!=0);
      return a;
   }

Du suchst aber den kleinsten gemeinsamen Teiler oder überhaupt einen Teiler?


Java:
zahl % teiler

// beispiel:
10 % 0 = 0;
10 % 1 = 1;
usw.
10 % 10 = 0;

also :

Java:
if(zahl%teiler == 0) {
println("Du bist ein Teiler")
}

grüße spin
 

MaviFilms

Mitglied
Sry hätte noch sagen müssen, dass die Methoden in der main() durch eine while-Schleife aufgerufen werden. Aber danke für die schnelle Antwort. Und ja ich suche alle Teiler einer Zahl. Wäre nett wenn du mir mit der if-Anweisung helfen würdest. Ich muss nur diesen undefinierten Zustand korrigieren und dann würde es funktionieren. Nur ich weiss nicht wie ich mit teiler != zahl umgehen soll. Was soll es tun, ohne dabei die restlichen Zahlen von 1 bis n auszugeben.


Java:
		Aufzaehlung meinTeiler = new Teiler(10);
		
		while(meinTeiler.hatNochElement())
		{
			System.out.print(meinTeiler.naechstesElement() + " ");
		}
 

Oben