Java语言程序,输入一个大于3的正整数,判断其是否为质数,若是输出“xx数为质数”否则输出“xx数不为质数

如题所述

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)) {// 调用isPrime()方法
System.out.println(num + "为素数!");// 若isPrime()方法返回true,输出是素数
} else {
System.out.println(num + "不为质数!");// 若isPrime()方法返回false,输出不是素数
}
} catch (Exception e) {
System.out.println("请输入整数");// 捕捉异常,若输入的不是整数,输出异常
}
}

/**
 * 用于判断一个数是否为素数,若为素数,返回true,否则返回false
 * @param num 输入的值
 * @return true、false
 */
public static boolean isPrime(int num) {
boolean flag = true;
if (num < 2) {// 素数不小于2
return false;
} else {
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {// 若能被整除,则说明不是素数,返回false
flag = false;
break;// 跳出循环
}
}
}
return flag;
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-19

只有两个约数的数,是质数

import java.util.Scanner; 
public class Test {   
public static boolean checkNumber() {   
     int input=0;   
     boolean flag = true;     
try{   
     Scanner str = new Scanner(System.in);   
     System.out.print("请输入一个数字:");   
     input = Integer.parseInt(str.nextLine());   
}catch(Exception ex){    
     System.out.println("输入格式不正确:"+ex.getMessage());    
     return false;   
}     
for(int i = 2; i <= Math.sqrt(input); i++){    
if(input % i == 0){     
     flag = false;     
     break;    
}   
}   
return flag;  
}   
public static void main(String[] args){     
     boolean isTrue = checkNumber();     
     String str = isTrue == true ? "是" : "不是";   
     System.out.println("您输入的数"+str+"质数");   
 }}

本回答被网友采纳
第2个回答  2013-12-19
x除2到sqrt(x),如果有一个及以上的数可以被整除,则不是质数,反之则是质数.boolean flag = true;if(x<4){ if(x==2) flag = false;}else{ for(int i=2;i<(int)sqrt(x);i++) { if(x%i==0) flag = false; }}if(flag) System.out.println("Yes");else System.out.println("No");
相似回答