解题思路:

  1. 申请一个数组,从1-N初始化

  2. 从第二个数开始,(2是素数),并且用循环把该数的倍数的数置为0

  3. 然后访问下一个不是1的数(一定为素数),重复上面一个步骤

  4. 在循环中把不是0的数输出

import java.util.*;
//用筛法求之N内的素数。
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int N = scanner.nextInt();
		FindP(N);
	}
	public static void FindP(int num) {
		int[] nums = new int[num];
		//将num到1的值赋给数组
		for(int i = 1; i < num; i++) {
			nums[i] = i + 1;
		}
//		从第二个数开始,(2是素数),并且用循环把该数的倍数的数置为0
//		然后访问下一个不是0的数(一定为素数),重复上面一个步骤
		for(int i = 1; i < num; i++) {
			if(nums[i] != 0) {
				System.out.println(nums[i]);//输出这个非0的数(这一定是素数)
				//将该素数的倍数赋值为0
				for(int j = i+1; j< num; j++) {
					if(nums[j]%nums[i] == 0) {
						nums[j] = 0;
					}
				}
			}
		}
	}
}
  • 用筛法求素数大体思路:
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。