import java.util.Scanner;
/*质数又称素数,是指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数*/
public class PrimeNumber {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);// 扫描器,接收控制台输入信息
System.out.print("请输入一个整数:");
try {
int num = scan.nextInt();// 取出控制台输入的信息
if (isPrime(num)) {// 调用play()方法
System.out.println(num + "是素数!");// 若play()方法返回true,输出是素数
} else {
System.out.println(num + "不是素数!");// 若play()方法返回false,输出不是素数
}
} catch (Exception e) {
System.out.println("请输入整数");// 捕捉异常,若输入的不是整数,输出异常
}
}
// 该方法用于判断一个数是否为素数,若为素数,返回true,否则返回false
public static boolean isPrime(int a) {
boolean flag = true;
if (a < 2) {// 素数不小于2
return false;
} else {
for (int i = 2; i <= Math.sqrt(a); i++) {
if (a % i == 0) {// 若能被整除,则说明不是素数,返回false
flag = false;
break;// 跳出循环
}
}
}
return flag;
}
}
分享到:
2012-09-28 10:30
浏览 2322
评论
2 楼
lwcumt
2012-10-18
Chris_bing 写道
36行的
for (int i = 2; i <= Math.sqrt(a); i++) {
执行的效率会变低,每次循环遍历都要进行一次开方操作.
应该改成
for (int i = 2 , sqrt = Math.sqrt(a) ; i <= sqrt ; i++) {
谢谢你的建议!!!
1 楼
Chris_bing
2012-10-12
36行的
for (int i = 2; i <= Math.sqrt(a); i++) {
执行的效率会变低,每次循环遍历都要进行一次开方操作.
应该改成
for (int i = 2 , sqrt = Math.sqrt(a) ; i <= sqrt ; i++) {