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 (