1、判断素数的第一个方法
(最直观但效率最低)
public static boolean isPrime(int n){
if (n <= 3) {
return n > 1;
}
for(int i = 2; i < n; i++){
if (n % i == 0) {
return false;
}
}
return true;
}
2、判断素数的第二个方法
(初步优化)
public static boolean isPrime(int n) {
if (n <= 3) {
return n > 1;
}
int sqrt = (int)Math.sqrt(n);
for (int i = 2; i <= sqrt; i++) {
if(n % i == 0) {
return false;
}
}
return true;
}
3、判断素数的第三个方法
(最优)
public static boolean isPrime(int num) {
if (num <= 3) {
return num > 1;
}
// 不在6的倍数两侧的一定不是质数
if (num % 6 != 1 && num % 6 != 5) {
return false;
}
int sqrt = (int) Math.sqrt(num);
for (int i = 5; i <= sqrt; i += 6) {
if (num % i == 0 || num % (i + 2) == 0) {
return false;
}
}
return true;
}
题目描述
输入一个小于等于2000的正整数,检查该数是否为质数
输入描述
输入一个小于等于2000的正整数
输出描述
输出Y或者N
样例输入
34
样例输出
N
源代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n=scanner.nextInt();
boolean s=false;
if (n>0&&n<2000) {
//判断素数
if (n==2||n==1) {
System.out.println("Y");
}else {
for(int i=2;i<n;i++) {
if (n % i==0) {
s=false;
break;
}
else {
s=true;
}
}
if (s==true) {
System.out.println("Y");
}
else {
System.out.println("N");
}
}
}else {
System.out.println("您输入的数据有误!");
}
}
}