Bài 60: Bài tập Java - Liệt kê số Fibonacci nhỏ hơn n và là số nguyên tố

Ngày đăng: 1/2/2023 1:31:54 PM

Lời giải

Sau đây là chương trình java liệt kê các số Fibonacci nhỏ hơn n là số nguyên tố trong Java.

File: BaiTap12.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72    

package vn.viettuts.baitap;

 

import java.util.Scanner;

 

/**

 *  Chương trình liệt kê các số Fibonacci nhỏ hơn n là số nguyên tố.

 *  Với n được nhập từ bàn phím.

 

 * @author viettuts.vn

 */

public class BaiTap12 {

    private static Scanner scanner = new Scanner(System.in);

    /**

     * main

     *

     * @param args

     */

    public static void main(String[] args) {

        System.out.print("Nhập số tự nhiên n = ");

        int n = scanner.nextInt();

        System.out.printf("Các số fibonacci nhỏ hơn %d và "

                "là số nguyên tố: ", n);

        int i = 0;

        while (fibonacci(i) < 100) {

            int fi = fibonacci(i);

            if (isPrimeNumber(fi)) {

                System.out.print(fi + " ");

            }

            i++;

        }

    }

     

    /**

     * Tính số fibonacci thứ n

     *

     * @param n: chỉ số của số fibonacci tính từ 0

     *           vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2

     * @return số fibonacci thứ n

     */

    public static int fibonacci(int n) {

        if (n < 0) {

            return -1;

        else if (n == 0 || n == 1) {

            return n;

        else {

            return fibonacci(n - 1) + fibonacci(n - 2);

        }

    }

     

    /**

     * check so nguyen to

     *

     * @author viettuts.vn

     * @param n: so nguyen duong

     * @return true la so nguyen so,

     *         false khong la so nguyen to

     */

    public static boolean isPrimeNumber(int n) {

        // so nguyen n < 2 khong phai la so nguyen to

        if (n < 2) {

            return false;

        }

        // check so nguyen to khi n >= 2

        int squareRoot = (int) Math.sqrt(n);

        for (int i = 2; i <= squareRoot; i++) {

            if (n % i == 0) {

                return false;

            }

        }

        return true;

    }

}

Kết quả:

 Nhập số tự nhiên n = 100
 Các số fibonacci nhỏ hơn 100 và là số nguyên tố: 2 3 5 13 89 

Nguồn tin: viettuts