Java实现方法判断一个数是不是素数(三种不同的方法,都有运行结果展示)
素数的定义:
质数(primenumber)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数
如何判定一个数是不是素数?方法一:思考思路采用循环,使用大于1小于判定数的数去整除判定数代码实现importjava.util.Scanner;publicclassIsPrime{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);intnumber=scan.nextInt();isPrime(number);}publicstaticvoidisPrime(intnumber){intcount=0;for(inti=2;icount++;}}if(count==0){System.out.println(number+"是素数");}else{System.out.println(number+"不是素数");}}}运行结果存在问题当数字较大时,循环次数较多,比较耗时,效率较低,所以不推荐使用-
方法二:思考思路采用循环,使用大于1小于判定数的二分之一的数去整除判定数,(任何一个数的最大因数都小于等于它的二分之一)代码实现
importjava.util.Scanner;publicclassIsPrime{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);intnumber=scan.nextInt();isPrime(number);}publicstaticvoidisPrime(intnumber){intcount=0;for(inti=2;icount++;}}if(count==0){System.out.println(number+"是素数");}else{System.out.println(number+"不是素数");}}}运行结果存在问题相对上面的代码,效率提高了不少,可以采纳,但是不是最优做法。
方法三:思考思路采用循环,使用大于1小于判定数的开方的数去整除判定数(因为如果一个数不是素数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,一个小于或等于它的平方根.并且成对出现)代码实现importjava.util.Scanner;importjava.lang.Math;publicclassIsPrime{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);intnumber=scan.nextInt();isPrime(number);}publicstaticvoidisPrime(intnumber){intcount=0;for(inti=2;icount++;}}if(count==0){System.out.println(number+"是素数");}else{System.out.println(number+"不是素数");}}}运行结果存在问题:不好理解,但是代码效率好,推荐使用。