求出100以內的所有素數--篩選法和根號法
阿新 • • 發佈:2019-01-03
/** * 篩選法求出100以內的所有素數,即從小到大篩去一個已知素數的所有倍數 * * 素數:只能被1和本身整除 * * 根號法:素數不能被2~sqrt(n)整除 */ package t; import java.util.*; import java.math.*; public class Test7_3 { public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub //int a[101]; error int[] a = new int[101]; int i, j; //1-100中找素數 for(i=1; i<101; i++){ a[i] = 1; } //從已知素數2開始,考察4 6 8 ----;然後3、5、7 for(i=2; i<101; i++){ if(a[i] != 0){ for(j=i+i; j<101;){ if(j%i == 0){ a[j]=0; j = j+i;//檢查一個已知素數的所有倍數 } } } } //素數最小是2。 0、1都不是 for(i=2; i<101; i++){ if(a[i] != 0){ System.out.println(i); } } System.out.println("-----------------------------"); sqrtfind(100); } public static void sqrtfind(int n){ int i=0; //素數最小是2。 0、1都不是 for(i=2; i<=n; i++){ int k = (int)Math.sqrt(i); //i 是否能被整除 int j = 0; for(j=2; j<=k; j++){ if(i%j == 0){ //不是素數 break; } } if(j>k){ //不能被整除--沒有break System.out.println(i); } } } }