Finden Sie Faktoren einer gegebenen Zahl in Java

Suraj P 12 Oktober 2023
Finden Sie Faktoren einer gegebenen Zahl in Java

In diesem Artikel lernen wir, wie man verschiedene Faktoren oder Teiler einer bestimmten Zahl in Java findet.

Finden Sie Faktoren einer gegebenen Zahl in Java

Methode Eins: Brute-Force-Ansatz

Ein einfacher Ansatz wäre, alle Zahlen von 1 bis n zu durchlaufen und zu sehen, ob sie n richtig dividieren (d. h. dem Rest Null geben). Wenn ja, ist es ein anderer Faktor, kein Faktor.

Beispielcode:

import java.io.*;

class test {
  public static void main(String[] args) {
    int n = 24;

    for (int i = 1; i <= n; i++) {
      if (n % i == 0)
        System.out.println(i);
    }
  }
}

Ausgang:

1
2
3
4
6
8
12
24

Methode 2: Traversieren bis n/2

Anhand der ersten Methode können wir beobachten, dass wir, anstatt bis n zu gehen, bei n/2 anhalten können, da eine Zahl größer als n/2 niemals der Faktor der Zahl n sein kann, außer die Nummer selbst.

Zum Beispiel ist die Zahl n 100, also ist n/2 50, also kann jede Zahl größer als 50, wie 51 oder 52, niemals der Faktor von 100 sein.

Beispielcode:

import java.io.*;

class GFG {
  public static void main(String[] args) {
    int n = 24;

    for (int i = 1; i <= n / 2; i++) {
      if (n % i == 0)
        System.out.println(i);
    }

    System.out.println(n);
  }
}

Im obigen Code haben wir nach der Schleife eine zusätzliche Druckanweisung geschrieben, da die Zahl n selbst ein Faktor ist.

Ausgang:

1
2
3
4
6
8
12
24

Methode 3: Traversieren bis sqrt(n)

Wir können die zweite Methode noch weiter optimieren, indem wir eine kleine Beobachtung machen. Wenn wir genau hinsehen, sehen wir, dass Faktoren paarweise auftreten.

Zum Beispiel n = 100 und seine Faktoren sind 1,2,4,5, 10, 20, 25, 50, 100. Die verschiedenen Paare, die hier möglich sind, sind also (1,100), (2,50), (4,25), (5,20), (10,10).

Daher müssen wir maximal die Zahlen bis sqrt(n) prüfen; in diesem Fall ist es 10. Das letzte (10,10) ist ein Sonderfall, da wir wissen, dass die Zahl ein Faktor ist.

Beispielcode:

import java.io.*;
class GFG {
  public static void main(String[] args) {
    int num = 24;

    for (int i = 1; i <= Math.sqrt(num); i++) {
      if (num % i == 0) {
        if (num / i == i)
          System.out.println(i);

        else {
          System.out.println(i);
          System.out.println(num / i);
        }
      }
    }
  }
}

Ausgang:

1
24
2
12
3
8
4
6

In der obigen Ausgabe sind die Faktoren nicht sortiert. Wir können die sortierte Ausgabe mit dem Hilfs-Leerzeichen erhalten.

Beispielcode:

import java.io.*;
import java.util.*;

class GFG {
  public static void main(String[] args) {
    int num = 24;
    ArrayList<Integer> store = new ArrayList<>();
    for (int i = 1; i <= Math.sqrt(num); i++) {
      if (num % i == 0) {
        if (num / i == i)
          System.out.println(i);

        else {
          System.out.println(i);
          store.add(num / i);
        }
      }
    }

    for (int j = store.size() - 1; j >= 0; j--) System.out.println(store.get(j));
  }
}

Ausgang:

1
2
3
4
6
8
12
24

Im obigen Code haben wir eine ArrayList verwendet, um einige Faktoren zu speichern und dann den Inhalt der ArrayList am Ende in umgekehrter Reihenfolge auszugeben.

Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

Verwandter Artikel - Java Math