什么是素数了?就是除了0和1之外,一个数只能由1和它本身相乘得来,这就是素数
第一种暴力求解:
package com.fan.suanfati;import java.util.Scanner;public class SuShu {public static void main(String[] args) {System.out.println("请输入数字,以便求出该数字内的素数");Scanner scanner = new Scanner(System.in);int a = scanner.nextInt();int bl = bl(a);System.out.println(bl);}public static int bl(int n){int count=0;for (int i =2 ; i<n ; i++) {count+=isPrime(i)? 1 : 0;}return count;}//i*i其利用根号,对其进行了优化,但是注意要有等号public static boolean isPrime(int f){for (int i = 2; i*i <= f;i++) {if (f%i==0){return false;}}return true;}
}
第二种:
埃氏筛选:
怎么理解了?就是一个数是素数,那么这个数乘以2,3,4一直下去,其都是合数,那么就可以进行排除了,这就是埃氏筛选
代码:
package com.fan.suanfati;
//埃式筛选:就素数乘以2 *3 一直乘都是合数,剩下的就是素数
public class suShu1 {public static void main(String[] args) {int i = aiShi(100);System.out.println(i);}public static int aiShi(int n){boolean[] booleans = new boolean[n]; //默认false表示素数int count=0;for (int i = 2; i <n; i++) {if (!booleans[i]){count++;//其一般是j=2*i,但是优化师i*i,因为重复了for (int j=i*i;j<n; j+=i){booleans[j]=true;}}}return count;}
}