判断素数两种方法【自用】
普通方法:
如果多次调用,时间复杂度高,有可能导致运行不通过
static boolean isPrime(int x) {if(x<=1) return false;for(int i=2;i<=Math.sqrt(x);i++) {if(x%i==0) {return false;}}return true;}
埃氏筛选法:
用空间换时间,只需要预处理一次,每次判断进行对应下标查找真假即可,时间复杂度大大减少
import java.util.Arrays;
import java.util.Scanner;public class 埃氏筛选素数 {//埃氏筛选static boolean[] sieve(int max) {boolean[] isPrime=new boolean[max+1];Arrays.fill(isPrime, true);isPrime[0]=isPrime[1]=false;for(int i=2;i*i<=max;i++) {for(int j=i*i;j<=max;j+=i) {isPrime[j]=false;}}return isPrime;}//普通方法static boolean isPrime(int x) {if(x<=1) return false;for(int i=2;i<=Math.sqrt(x);i++) {if(x%i==0) {return false;}}return true;}public static void main(String[] args) {Scanner sc=new Scanner(System.in);int max=100;boolean[] isPrime=sieve(max);for(int i=2;i<=max;i++) {if(isPrime[i]) {System.out.println(i);}}sc.close();}
}