Java每日一练:科普文章

引言

Java是一种广泛应用于软件开发领域的高级编程语言。它的特点是可移植性强、语法简单易学、面向对象等。而每天进行一些小练习,可以帮助我们巩固Java的基础知识,提高编程能力。本文将介绍一些关于Java的每日一练题目,并给出相应的代码示例。希望通过这些示例,能帮助读者更好地理解和运用Java语言。

题目一:判断一个数是否为质数

问题描述

给定一个正整数n,判断它是否为质数。质数是指大于1且只能被1和自身整除的数。

解题思路

判断一个数是否为质数的常用方法是找到它的所有因子,如果只有1和它本身,则它是质数。为了提高效率,可以将判断范围缩小到[2, sqrt(n)],因为如果一个数有大于sqrt(n)的因子,那么它一定有小于sqrt(n)的因子。

代码示例

public class PrimeNumberChecker {

    public static boolean isPrime(int n) {
        if (n <= 1) {
            return false;
        }
        
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                return false;
            }
        }
        
        return true;
    }

    public static void main(String[] args) {
        int num = 17;
        if (isPrime(num)) {
            System.out.println(num + "是质数");
        } else {
            System.out.println(num + "不是质数");
        }
    }
}

题目二:计算阶乘

问题描述

给定一个非负整数n,计算n的阶乘,即n! = n * (n-1) * (n-2) * ... * 2 * 1。

解题思路

阶乘的计算可以使用递归或循环两种方式。递归方式是将问题分解为子问题,不断递归求解。循环方式是从1到n,不断累积乘积。

代码示例

public class FactorialCalculator {

    // 递归方式计算阶乘
    public static int factorialRecursive(int n) {
        if (n == 0) {
            return 1;
        }
        return n * factorialRecursive(n - 1);
    }
    
    // 循环方式计算阶乘
    public static int factorialLoop(int n) {
        int result = 1;
        for (int i = 1; i <= n; i++) {
            result *= i;
        }
        return result;
    }

    public static void main(String[] args) {
        int num = 5;
        System.out.println(num + "! = " + factorialRecursive(num));
        System.out.println(num + "! = " + factorialLoop(num));
    }
}

题目三:计算斐波那契数列

问题描述

斐波那契数列是指从0和1开始,后面的每一项都是前面两项的和。给定一个非负整数n,计算斐波那契数列的第n项。

解题思路

斐波那契数列的计算可以使用递归或循环两种方式。递归方式是将问题分解为子问题,不断递归求解。循环方式是从0和1开始,不断累积计算下一项。

代码示例

public class FibonacciCalculator {

    // 递归方式计算斐波那契数列
    public static int fibonacciRecursive(int n) {
        if (n <= 1) {
            return n;
        }
        return fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2);
    }
    
    // 循环方式计算斐波那契数列
    public static int fibonacciLoop(int n) {
        if (n <= 1) {
            return n;
        }
        
        int prev = 0;
        int curr = 1;
        for (