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.