我们首先来了解下素数的定义,素数不能被除了1和它本身之外的数整除,也就是说我们可以使用for循环进行判断
Scanner in = new Scanner(System.in);
System.out.println("请输入一个数(N),将会列出(1~N)之间的素数");
int n = in.nextInt();
boolean[] b = new boolean[n+]; //创建一个标识符数组,长度为n+1
for (int i = ; i <= n; i++) { //数组下标从3开始
b[i] = true; //将true赋值给b[i]
for (int j = ; j < i; j++) {
if (i % j == ) //如果i可以被j整除,则它不是素数
b[i] = false; //将false赋值给b[i]
}
}
通过上面的代码,可以发现,当某个数字i被判断为不是素数是,与之对应的b[i]则为false,也就是说,b数组中为true的数组下标就是素数
System.out.print(); //2是素数
for (int m = ; m < b.length; m++) {
if (b[m] == true)
System.out.print(" " + m);
}
完整代码如下
package com.lenovo.work19;
import java.util.Scanner;
public class PrimeNumber {
public static void main(String[] args) {
boolean f;
Scanner in = new Scanner(System.in);
System.out.println("请输入一个数(N),将会列出(1~N)之间的素数");
int n = in.nextInt();
boolean[] b = new boolean[n+];
for (int i = ; i <= n; i++) {
b[i] = true;
for (int j = ; j < i; j++) {
if (i % j == )
b[i] = false;
}
}
System.out.print();
for (int m = ; m < b.length; m++) {
if (b[m] == true)
System.out.print(" " + m);
}
}
}
执行结果为:
