解題思路:
-
申請一個陣列,從1-N初始化
-
從第二個數開始,(2是素數),并且用回圈把該數的倍數的數置為0
-
然后訪問下一個不是1的數(一定為素數),重復上面一個步驟
-
在回圈中把不是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;
}
}
}
}
}
}
- 用篩法求素數大體思路:
將某一范圍內的正整數從小到大順序排序,然后在所有數中選取最小的素數,比如為2時,然后去掉2的整數倍的數,取完之后,在選取剩下的最小的素數重復剛剛的步驟,依次類推,直到篩子為空時結束,剩下的這些數就是素數,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/541067.html
標籤:其他
下一篇:MyBatis動態SQL
