天天看点

输入一个数(N),列出(1~N)之间的素数

我们首先来了解下素数的定义,素数不能被除了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);
        }
    }
}
           

执行结果为:

输入一个数(N),列出(1~N)之间的素数

继续阅读