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

주어진 숫자가 피보나치 수인지 확인하는 Java 프로그램

다음은 주어진 숫자가 피보나치 수(Fibonacci number)인지 확인하는 Java 프로그램입니다.

예제

public class Demo{
   static boolean perfect_square_check(int val){
      int s = (int) Math.sqrt(val);
      return (s*s == val);
   }
   static boolean fibonacci_num_check(int n){
      return perfect_square_check(5*n*n + 4) || perfect_square_check(5*n*n - 4);
   }
   public static void main(String[] args){
      for (int i = 6; i <= 17; i++)
      System.out.println(fibonacci_num_check(i) ? i + " is a Fibonacci number" :
      i + " is a not Fibonacci number");
   }
}

출력

6 is a not Fibonacci number
7 is a not Fibonacci number
8 is a Fibonacci number
9 is a not Fibonacci number
10 is a not Fibonacci number
11 is a not Fibonacci number
12 is a not Fibonacci number
13 is a Fibonacci number
14 is a not Fibonacci number
15 is a not Fibonacci number
16 is a not Fibonacci number
17 is a not Fibonacci number

Demo라는 이름의 클래스에는 정수 값을 매개변수로 받는 static boolean 함수 perfect_square_check가 정의되어 있습니다. 이 함수는 전달받은 값의 제곱근을 구해 정수형 변수에 저장한 뒤, 제곱근을 다시 곱한 결과가 원래 값과 같은지 비교합니다. 두 값이 일치하면 해당 숫자가 완전제곱수(perfect square)라는 의미로 true를 반환하고, 그렇지 않으면 false를 반환합니다.

다음으로 fibonacci_num_check라는 또 다른 static boolean 함수가 정의되며, 이 함수는 앞서 만든 완전제곱수 판별 함수를 호출합니다. 여기서 핵심은 피보나치 수의 잘 알려진 수학적 성질입니다. 어떤 숫자 n이 피보나치 수일 필요충분조건은 5n²+4 또는 5n²−4 중 하나가 완전제곱수라는 것입니다. 따라서 별도로 피보나치 수열을 생성하지 않고도 이 공식만으로 빠르게 판별할 수 있습니다.

main 함수에서는 시작 숫자(6)부터 끝 숫자(17)까지 반복문을 통해 하나씩 검사하면서, 각 숫자가 피보나치 수인지 아닌지에 따라 적절한 메시지를 출력합니다. 실행 결과를 보면 6~17 범위에서는 8과 13만 피보나치 수에 해당하는 것을 확인할 수 있습니다.