みんな!私は、2 から指定された数値 (ユーザー入力) までのすべての素数を表示する Java アプリを持っています。指定された範囲から最後の数値、つまり最大の数値だけを出力するにはどうすればよいですか? たとえば、ユーザー入力が 12 の場合、コンパイラは 2、3、5、7、11 ではなく、11 のみを出力します。コードは次のとおりです。
package sieve_eratos;
import java.util.Scanner;
public class Sieve_Eratos {
public static void main(String[] args) {
// get the ceiling on our prime numbers
int N;
Scanner sc = new Scanner(System.in);
System.out.print("enter the prime number ceiling: ");
N = sc.nextInt();
sc.close();
int k = 0;
// init numbers array, where true denotes primality
boolean[] isPrime = new boolean[N];
// init possible primes
isPrime[0] = false; // 1 is not prime
for (int i = 1; i < N; i++) {
isPrime[i] = true;
k = k + 1;
}
// check every number >= 2 for primality
for (int i = 2; i <= N; i++) {
// i is prime if it hasn't been "crossed off" yet
if (isPrime[i - 1]) {
// print out the prime number
System.out.println(i);
// "cross off" all the subsequent multiples of i
//for (int j = 2*i; j <= N; j += i) {
for (int j = i * i; j <= N; j += i) { // more efficient
isPrime[j - 1] = false;
}
}
}
}
}
別の整数配列を作成してから最後の要素(最後に保存された数値になる)を呼び出すことを考えていましたが、これを行う方法がわかりません。前もって感謝します!