-
题目:
给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。
-
输入描述:
测试数据有多组,每组输入一个数n。
输出描述:
对于每组输入,若是素数则输出yes,否则输入no
- 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
- 思想一:试除法
要判断X是否为质数,就从2一直尝试到x-1的做法效率是最差的! 其实只要从2一直尝试到,就可以了。因为因数都是成对出现的。比如,100的因数有:1和100,2和50,4和25,5和20,10和10。看出来没有?成对的因数,其中一个必然小于等于100的开平方,另一个大于等于100的开平方。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
boolean flag=false;
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
if (isPrime(n)==true) {
System.out.println("yes");
}else {
System.out.println("no");
}
}
private static boolean isPrime(int n) {
if (n<=1) return false;
for (int i = 2; i <=Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
本文介绍了一种高效的素数判断算法——试除法。通过只检查到目标数平方根的整数,大大提高了判断效率。文章提供了完整的Java实现代码,包括主函数和素数判断函数。

被折叠的 条评论
为什么被折叠?



