-
题目:
给定一个数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;
}
}