Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)로 주어진 범위에서 약수 개수가 홀수인 숫자의 개수 구하기


주어진 범위 안에서 약수의 개수가 홀수인 숫자가 몇 개 있는지 구하려면, 해당 범위에 포함된 완전제곱수의 개수를 세면 됩니다. 일반적으로 약수는 서로 짝을 이루기 때문에 약수의 개수는 짝수이지만, 완전제곱수만이 제곱근과 같은 약수를 하나 더 가지므로 약수의 총 개수가 홀수가 됩니다.

예제 코드

import java.io.*;
import java.util.*;
import java.lang.*;
public class Demo{
   public static int square_count(int low_range, int high_range){
      return (int)Math.pow((double)high_range,0.5) - (int)Math.pow((double)low_range-1,0.5);
   }
   public static void main (String[] args){
      int low_range = 55, high_range = 1000;
      System.out.print("The number of values with odd factors between a given range of numbers is : " + square_count(low_range, high_range));
   }
}

실행 결과

The number of values with odd factors between a given range of numbers is : 24

코드 동작 원리

Demo 클래스에는 square_count라는 정적 메서드가 정의되어 있습니다. 이 메서드는 범위의 최솟값과 최댓값, 두 개의 정수 매개변수를 전달받아 해당 범위 내에서 약수의 개수가 홀수인 숫자, 즉 완전제곱수의 개수를 반환합니다.

핵심 로직은 수학 함수 Math.pow를 활용하는 것입니다. 최댓값의 제곱근에서 (최솟값 − 1)의 제곱근을 빼면 범위 내 완전제곱수의 개수가 바로 계산됩니다. 예를 들어 √1000의 정수 부분은 31이고, √54의 정수 부분은 7이므로 55부터 1000 사이에는 31 − 7 = 24개의 완전제곱수가 존재합니다.

main 메서드에서는 하한값 55와 상한값 1000을 설정한 뒤 square_count를 호출하고, 계산된 결과를 콘솔에 출력합니다.