质数定义:能且仅能被1和它自己整除的整数,称为质数,最小的质数是2。java
思路:若是X在(2,X-1] 这个区间内没有约数,则证实X是质数。优化
实现方法一:code
/** * @author 蜗牛君 * @create 2019-09-12 16:52 */ /*输出100000以内的质数 * 质数的定义:能且只被1和它自己整除的数称为质数 * */ public class primeNumberTest { public static void main(String[] args) { //定义一个变量记录质数的个数 int primeNumberCount = 0; //获取当前时间 long start = System.currentTimeMillis(); //计算0到100000之间质数的个数 int num = 100000; for (int i = 2; i <= num; i++) { //定义一个bool型变量,用来判断是否是质数 boolean isFlag = true; for (int j = 2; j < i; j++) { if (i % j == 0) { //若是在(2,i-1]这个区间内有约数,说明不是质数 isFlag = false; } } if (isFlag == true) { //System.out.println(i + "是质数"); primeNumberCount++; } } long end = System.currentTimeMillis(); System.out.println("本次运算用时:" + (end - start ) + "毫秒"); System.out.println("0到"+ num + "之间共有"+ primeNumberCount +"个质数!"); } }
实现方法二:class
是对方法一的优化,一旦判断X为质数,就经过countinue来跳出本次循环,节省算力,缩减计算时间变量
注:对循环体添加标签,能够方便break、continue直接跳转到指定的循环体循环
public class primeNumberTest { public static void main(String[] args) { int primeNumberCount = 0; //获取当前时间 long start = System.currentTimeMillis(); int num = 100000; lable:for ( int i = 2 ; i <= num ; i++ ){ int count = 0; for (int j = 2; j < i;j ++){ if (i % j == 0) { //当在这个区间有公约数时,可判断不是质数,直接退出循环,再也不进行后面的判断,可缩减部分运算时间 continue lable ; } } primeNumberCount++; } long end = System.currentTimeMillis(); System.out.println("本次运算用时:" + (end - start ) + "毫秒"); System.out.println("0到"+ num + "之间共有"+ primeNumberCount +"个质数!"); } }
实现方法三:方法
再次优化,重点在二层循环时,减小了对 j 的判断的范围。im
说明:若是 C = A x A,则只须要肯定 C 在 ( 2 , A ] 的区间内没有约数,就能够证实 C 是质数。static
public class primeNumberTest { public static void main(String[] args) { int primeNumberCount = 0; //获取当前时间 long start = System.currentTimeMillis(); int num = 100000; lable:for ( int i = 2 ; i <= num ; i++ ){ int count = 0; for (int j = 2; j < i;j ++){ if (i % j == 0) { //当在这个区间有公约数时,可判断不是质数,直接退出循环,再也不进行后面的判断,可缩减部分运算时间 continue lable ; } } primeNumberCount++; } long end = System.currentTimeMillis(); System.out.println("本次运算用时:" + (end - start ) + "毫秒"); System.out.println("0到"+ num + "之间共有"+ primeNumberCount +"个质数!"); } }