Java에서 주어진 숫자의 약수 찾기
이 기사에서는 Java에서 주어진 숫자의 고유 인수 또는 약수를 찾는 방법을 배웁니다.
Java에서 주어진 숫자의 약수 찾기
방법 1: 무차별 대입 방식
간단한 접근 방식은 1부터 n까지 모든 숫자를 순회하여 n을 적절하게 나누는지 확인하는 것입니다(즉, 나머지를 0으로 지정). 그렇다면 요인이 아니라 다른 요인입니다.
예제 코드:
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);
}
}
}
출력:
1
2
3
4
6
8
12
24
방법 2: n/2
까지 트래버스
첫 번째 방법에서 우리는 n
까지 순회하는 대신 n/2
에서 멈출 수 있음을 관찰할 수 있습니다. 왜냐하면 n/2
보다 큰 숫자는 결코 숫자 n
의 인수가 될 수 없기 때문입니다. 번호 자체.
예를 들어 숫자 n은 100
이므로 n/2
는 50
이므로 51 또는 52와 같이 50보다 큰 숫자는 절대 100의 인수가 될 수 없습니다.
예제 코드:
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);
}
}
위의 코드에서 숫자 n
자체가 요소이기 때문에 루프 뒤에 추가 인쇄 문을 작성했습니다.
출력:
1
2
3
4
6
8
12
24
방법 3: sqrt(n)
까지 트래버스
작은 관찰을 통해 두 번째 방법을 더욱 최적화할 수 있습니다. 자세히 보면 요인이 쌍으로 발생한다는 것을 알 수 있습니다.
예를 들어 n = 100
이고 인수는 1,2,4,5, 10, 20, 25, 50, 100입니다. 따라서 여기서 가능한 다른 쌍은 (1,100), (2,50), (4,25), (5,20), (10,10)
.
따라서 최대에서 sqrt(n)
까지 숫자를 확인해야 합니다. 이 경우에는 10입니다. 마지막 (10,10)
은 숫자가 요소라는 것을 알고 있기 때문에 특별한 경우입니다.
예제 코드:
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);
}
}
}
}
}
출력:
1
24
2
12
3
8
4
6
위 출력에서 요인은 정렬되지 않습니다. 보조
공간을 사용하여 정렬된 출력을 얻을 수 있습니다.
예제 코드:
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));
}
}
출력:
1
2
3
4
6
8
12
24
위의 코드에서 ArrayList
를 사용하여 일부 요소를 저장한 다음 ArrayList
의 내용을 마지막에 역순으로 인쇄했습니다.