📜  斐波那契数列中数字的第 n 倍数的Java程序

📅  最后修改于: 2022-05-13 01:58:09.462000             🧑  作者: Mango

斐波那契数列中数字的第 n 倍数的Java程序

给定两个整数 n 和 k。在斐波那契数列中找到 K 的第 n 个倍数。

例子:

Input : k = 2, n = 3
Output : 9
3'rd multiple of 2 in Fibonacci Series is 34 
which appears at position 9.

Input  : k = 4, n = 5 
Output : 30
5'th multiple of 5 in Fibonacci Series is 832040 
which appears at position 30.

一个有效的解决方案基于以下有趣的属性。
斐波那契数列在模表示下总是周期性的。以下是示例。

F (mod 2) = 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0,
            1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 
Here 0 is repeating at every 3rd index and 
the cycle repeats at every 3rd index. 

F (mod 3) = 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2
Here 0 is repeating at every 4th index and 
the cycle repeats at every 8th index.

F (mod 4) = 1, 1, 2, 3, 1, 0, 1, 1, 2, 3, 1, 0, 1, 1, 2, 3,
           1, 0, 1, 1, 2, 3, 1, 0, 1, 1, 2, 3, 1, 0 
Here 0 is repeating at every 6th index and 
the cycle repeats at every 6th index.

F (mod 5) = 1, 1, 2, 3, 0, 3, 3, 1, 4, 0, 4, 4, 3, 2, 0,
            2, 2, 4, 1, 0, 1, 1, 2, 3, 0, 3, 3, 1, 4, 0
Here 0 is repeating at every 5th index and
the cycle repeats at every 20th index.

F (mod 6) = 1, 1, 2, 3, 5, 2, 1, 3, 4, 1, 5, 0, 5, 5, 4,
            3, 1, 4, 5, 3, 2, 5, 1, 0, 1, 1, 2, 3, 5, 2
Here 0 is repeating at every 12th index and 
the cycle repeats at every 24th index.

F (mod 7) = 1, 1, 2, 3, 5, 1, 6, 0, 6, 6, 5, 4, 2, 6, 1,
            0, 1, 1, 2, 3, 5, 1, 6, 0, 6, 6, 5, 4, 2, 6 
Here 0 is repeating at every 8th index and 
the cycle repeats at every 16th index.

F (mod 8) = 1, 1, 2, 3, 5, 0, 5, 5, 2, 7, 1, 0, 1, 1, 2,
            3, 5, 0, 5, 5, 2, 7, 1, 0, 1, 1, 2, 3, 5, 0 
Here 0 is repeating at every 6th index and 
the cycle repeats at every 12th index.

F (mod 9) = 1, 1, 2, 3, 5, 8, 4, 3, 7, 1, 8, 0, 8, 8, 7,
            6, 4, 1, 5, 6, 2, 8, 1, 0, 1, 1, 2, 3, 5, 8 
Here 0 is repeating at every 12th index and 
the cycle repeats at every 24th index.

F (mod 10) = 1, 1, 2, 3, 5, 8, 3, 1, 4, 5, 9, 4, 3, 7, 0,
             7, 7, 4, 1, 5, 6, 1, 7, 8, 5, 3, 8, 1, 9, 0.
Here 0 is repeating at every 15th index and
the cycle repeats at every 60th index.
Java
// Java Program to find position of n'th multiple
// of a number k in Fibonacci Series
import java.io.*;
import java.lang.*;
 
public class GFG {
    public static int findPosition(int k, int n)
    {
        long f1 = 0, f2 = 1, f3;
        int i = 2;
 
        while (i != 0) {
            f3 = f1 + f2;
            f1 = f2;
            f2 = f3;
 
            if (f2 % k == 0) {
                return n * i;
            }
 
            i++;
        }
        return 0;
    }
 
    public static void main(String[] args)
    {
        // Multiple no.
        int n = 5;
 
        // Number of whose multiple we are finding
        int k = 4;
 
        System.out.print("Position of n'th multiple" +
                        " of k in Fibonacci Series is ");
 
        System.out.println(findPosition(k, n));
    }
}
 
// Code contributed by Mohit Gupta_OMG


输出:

Position of n'th multiple of k in Fibonacci Series is 30

有关更多详细信息,请参阅有关斐波那契数列中数字的第 n 个倍数的完整文章!