判断一个数是否为质数,时间复杂度最低的算法复杂度为O(sqrt(n)),空间复杂度为O(1)。
具体实现方法是,对于一个大于1的正整数n,如果n不是质数,那么n一定可以分解成若干个质因数的乘积。我们可以从2开始,依次尝试用2、3、4……直到n的平方根为止的每一个整数来除n,如果n能被这个数整除,那么n就不是质数。如果n不能被任何一个小于等于它的整数整除,那么n是质数。
话不多说上代码!
import java.util.*;
public class Test {
public static void main(String[] args) {
System.out.println("请输入一个数字用来判断是否为质数:");
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
boolean prime = isPrime(i);
System.out.println(prime);
}
public static boolean isPrime(int n) {
if (n < 2) {
return false;
}
int sqrtN = (int)Math.sqrt(n);
for (int i = 2; i <= sqrtN; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
运行效果: