`
lwcumt
  • 浏览: 20810 次
  • 性别: Icon_minigender_1
  • 来自: 徐州
文章分类
社区版块
存档分类
最新评论

Java判断一个数是不是素数

阅读更多
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;
	}
}

 

分享到:
评论
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++) {

相关推荐

Global site tag (gtag.js) - Google Analytics