java编写给出2个正整数n,m,n小于m,找出n到m之间的全部质数。 按照从小到大的顺序,以英文逗号分隔输出。
时间: 2024-09-16 07:04:58 浏览: 20
在Java中,我们可以使用Sieve of Eratosthenes算法来找到给定范围内的所有质数。这是一个常见的高效算法,用于查找一定区间内的素数。以下是简单的步骤:
```java
public class PrimeNumbers {
public static String findPrimes(int n, int m) {
boolean[] isPrime = new boolean[m + 1]; // 初始化一个布尔数组标记是否为素数
Arrays.fill(isPrime, true); // 先假设所有数字都是质数
for (int i = 2; i * i <= m; i++) { // 只需检查到√m,因为大于这个值的合数一定能表示为两个较小因子的乘积
if (isPrime[i]) {
for (int j = i * i; j <= m; j += i) {
isPrime[j] = false; // 如果i能整除j,则j不是质数
}
}
}
StringBuilder result = new StringBuilder(); // 用于构建字符串结果
for (int i = n; i <= m; i++) {
if (isPrime[i]) {
result.append(i).append(",");
}
}
// 移除最后一个多余的逗号
return result.toString().substring(0, result.length() - 1);
}
public static void main(String[] args) {
int n = 5;
int m = 20;
System.out.println(findPrimes(n, m)); // 输出5,7,11,13,17,19
}
}
```
在这个程序中,我们首先创建了一个布尔数组`isPrime`,然后使用埃拉托斯特尼筛法来标记每个数字是否为质数。最后,我们将找到的质数添加到`StringBuilder`中,并返回以英文逗号分隔的结果。