编写JAVA程序求小于N的最大素数。 要求:输入一个正整数N(N>2),程序经分析处理输出小于N的最大素数
时间: 2024-09-29 10:14:39 浏览: 76
编写一个Java程序来找出小于给定正整数N的最大素数,你可以使用一种名为"Sieve of Eratosthenes"的算法,这是一个古老的寻找所有不超过某个指定范围内的素数的有效方法。以下是简单的步骤:
1. 创建一个布尔数组isPrime[N+1]并初始化为true,其中索引表示从2到N的数字。
2. 遍历数组,将所有数字设为prime(真),因为它们都是初始时的假设。
3. 对于每个找到的素数p,将它的倍数p * i (i > sqrt(p))标记为非素数(false),因为大于p的合数一定有一个因数小于等于sqrt(p)。
4. 当遍历完上述过程后,剩余未标记为非素数的就是素数。最大的素数就是最后一个未被改变的isPrime[i]为真的元素。
下面是Java代码示例:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个正整数N(N > 2): ");
int N = scanner.nextInt();
boolean[] isPrime = new boolean[N + 1];
for (int i = 2; i <= N; i++) {
isPrime[i] = true;
}
for (int p = 2; p * p <= N; p++) {
if (isPrime[p]) {
for (int i = p * p; i <= N; i += p) {
isPrime[i] = false;
}
}
}
// 找到最后一个未标记为非素数的数
int maxPrime = 0;
for (int i = 2; i < N; i++) {
if (isPrime[i]) {
maxPrime = i;
break;
}
}
System.out.println("小于 " + N + " 的最大素数是: " + maxPrime);
scanner.close();
}
}
```
阅读全文