1、一般方法,设置标兵,进行查找
class prime{ //检查是否是素数 public void isPrime(){ int m=0; for(int i=1;i<=1000;i++){ double count=0; for(int j =1;j<i;j++){ if(i%j==0){ count++; } } if(count==1||i==1){ System.out.print(i + " "); m++; } } System.out.println("素数有"+m+"个"); } public static void main(String args[]){ new prime().isPrime(); } }
2、筛选法
(1)、建立一个boolean类型的数组,将下标为奇数的值设为false,为偶数的下标设置为true
(2)、进行遍历值为false的下标,并将下标的倍数值设置为true
(3)、输出值为false的下标
public void isPrime1(){ int m=0; boolean prime[] = new boolean[1001]; for(int i=1;i<=1000;i++){ if(i%2==0){ prime[i] = false; }else{ prime[i] = true; } } for(int i =3;i<=1000;i+=2){ if(prime[i]){ for(int j=i+i;j<=1000;j+=i){ prime[j] = false; } } } for(int i =0;i<=1000;i++){ if(prime[i]||i==2){ m++; System.out.print(i+" "); } } System.out.print("0~1000之间的素数有"+m+"个"); }
3、高斯猜想‘
n以内的素数个数大约与n/ln(n)相当,或者说,当n很大时,两者数量级相同。这就是著名的素数定理。