개발인생/Altorithm

[알고리즘 기초 100제] 7. 소수 판별

forri 2025. 3. 9. 19:13

✔️문제

- 입력된 수가 소수인지 판별하시오.
- 13
- 정답: 13은 소수입니다.


📍정답

package _07_PrimeNum;

public class Main {

  public static void main(String[] args) {

    int num = 73;
    boolean isPrimeNumber = true;

    // 소수 = 1과 자기자신만 나누어 떨어지는 숫자
    // 2부터 자기 자신 이전의 숫자 중 나누어 떨어지는 수가 없으면 소수

    for (int i = 2; i < num / 2; i++) { // ★최적화:모든 수는 자기 절반보다 큰 수로는 나누어 떨어질수없음
      // for (int i = 2; i <= Mah.sqrt(num); i++)
      // ★더 최적화:제곱근까지만 검사(이유:소수의 약수는 반드시 제곱근 이하에 존재하기 때문)
      if (num % i == 0) { // PrimeNumber X
        isPrimeNumber = false;
        break; // 최적화:첫번째 약수를 찾으면 즉시 종료
      }
    }

    if (isPrimeNumber) {
      System.out.print(num + "은 소수입니다.");
    } else {
      System.out.print(num + "은 소수가 아닙니다.");
    }
  }
}

 

Math 클래스
- 수학 연산을 쉽게 처리할 수 있도록 도와주는 유틸리티 클래스
- java.lang.Math 패키지에 포함되어 있어 별도의 import 없이 사용 가능
- 다양한 수학 함수, 랜덤 값 생성, 반올림, 절대값, 제곱근, 로그 연산 등을 제공
- 자주 사용되는 메서드

기능 메서드
절대값 Math.abs(x)
최대/최소값 Math.max(x, y), Math.min(x, y)
제곱/제곱근 Math.pow(x, y), Math.sqrt(x), Math.cbrt(x)
반올림/올림/내림 Math.round(x), Math.ceil(x), Math.floor(x)
랜덤 Math.random()
- 1~100 사이에 랜덤값 생성
int random = (int) (Math.random() * 100) + 1;