输出1~20000内的所有素数,按每行5个打印出来埃拉托斯特尼筛法Java
时间: 2024-09-18 09:00:51 浏览: 55
基于MPI实现埃拉托斯特尼筛法及性能优化实验报告.docx
5星 · 资源好评率100%
埃拉托斯特尼筛法是一种用于查找一定范围内所有质数的经典算法。以下是使用Java实现该算法并按照每行打印5个素数的示例:
```java
public class SieveOfEratosthenes {
public static void main(String[] args) {
int limit = 20000; // 定义范围,这里输出1到20000之间的素数
boolean[] primes = new boolean[limit + 1]; // 初始化一个布尔数组,标记每个数字是否为素数
// 将前两个数设置为非素数(除了2)
for (int i = 2; i <= limit; i++) {
primes[i] = true;
}
// 根据埃拉托斯特尼筛选法,从2开始遍历到 sqrt(limit),将它的倍数标记为非素数
for (int p = 2; p * p <= limit; p++) {
if (primes[p]) { // 如果p是素数
for (int multiple = p * p; multiple <= limit; multiple += p) {
primes[multiple] = false; // 标记multiple为合数
}
}
}
// 打印结果,每行打印5个素数
for (int i = 2; i <= limit; i++) {
if (primes[i]) { // 只打印素数
System.out.print(i + " ");
if ((i + 4) % 5 == 0 || i == limit) { // 当达到每行5个或已经到达边界时换行
System.out.println();
}
}
}
}
}
```
阅读全文