用java输出区间[m,n]上的所有素数,m,n由键盘输入
时间: 2024-10-18 11:04:02 浏览: 22
在Java中,你可以使用Sieve of Eratosthenes算法来找出给定区间的素数。这个算法是一种古老的寻找所有小于给定数字n的质数的方法。以下是实现的一个简单示例:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class PrimeNumbersInRange {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入起始数字m:");
int m = scanner.nextInt();
System.out.println("请输入结束数字n:");
int n = scanner.nextInt();
// 确保m小于等于n
if (m > n) {
int temp = m;
m = n;
n = temp;
}
List<Integer> primes = sieveOfEratosthenes(m, n);
System.out.println("区间[" + m + ", " + n + "]内的素数有:");
for (int prime : primes) {
System.out.print(prime + " ");
}
}
// Sieve of Eratosthenes算法
private static List<Integer> sieveOfEratosthenes(int start, int end) {
boolean[] isPrime = new boolean[end + 1];
for (int i = 2; i <= Math.sqrt(end); i++) {
if (isPrime[i]) {
for (int j = i * i; j <= end; j += i) {
isPrime[j] = false;
}
}
}
List<Integer> result = new ArrayList<>();
for (int i = start; i <= end; i++) {
if (i > 1 && isPrime[i]) {
result.add(i);
}
}
return result;
}
}
```
当你运行这段代码时,它会提示用户输入起始和结束数值,然后输出对应区间内的所有素数。
阅读全文