Java에서 주어진 숫자의 약수 찾기

Suraj P 2023년10월12일
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/250이므로 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의 내용을 마지막에 역순으로 인쇄했습니다.

작가: 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

관련 문장 - Java Math