java 判断是不是素数 JAVA 输入一个数判断其是否是素数

Java\u5224\u65ad\u4e00\u4e2a\u6570\u662f\u4e0d\u662f\u7d20\u6570

import java.util.Scanner; //\u8d28\u6570\u53c8\u79f0\u7d20\u6570,\u662f\u6307\u5728\u4e00\u4e2a\u5927\u4e8e1\u7684\u81ea\u7136\u6570\u4e2d\uff0c\u9664\u4e861\u548c\u6b64\u6574\u6570\u81ea\u8eab\u5916\uff0c\u4e0d\u80fd\u88ab\u5176\u4ed6\u81ea\u7136\u6570\u6574\u9664\u7684\u6570 public class PrimeNumber { public static void main(String[] args) { Scanner scan = new Scanner(System.in);// \u626b\u63cf\u5668\uff0c\u63a5\u6536\u63a7\u5236\u53f0\u8f93\u5165\u4fe1\u606f System.out.print("\u8bf7\u8f93\u5165\u4e00\u4e2a\u6574\u6570\uff1a"); try { int num = scan.nextInt();// \u53d6\u51fa\u63a7\u5236\u53f0\u8f93\u5165\u7684\u4fe1\u606f if (isPrime(num)) {// \u8c03\u7528isPrime()\u65b9\u6cd5 System.out.println(num + "\u662f\u7d20\u6570\uff01");// \u82e5isPrime()\u65b9\u6cd5\u8fd4\u56detrue,\u8f93\u51fa\u662f\u7d20\u6570 } else { System.out.println(num + "\u4e0d\u662f\u7d20\u6570\uff01");// \u82e5isPrime()\u65b9\u6cd5\u8fd4\u56defalse,\u8f93\u51fa\u4e0d\u662f\u7d20\u6570 } } catch (Exception e) { System.out.println("\u8bf7\u8f93\u5165\u6574\u6570");// \u6355\u6349\u5f02\u5e38\uff0c\u82e5\u8f93\u5165\u7684\u4e0d\u662f\u6574\u6570\uff0c\u8f93\u51fa\u5f02\u5e38 } } /** * * \u7528\u4e8e\u5224\u65ad\u4e00\u4e2a\u6570\u662f\u5426\u4e3a\u7d20\u6570\uff0c\u82e5\u4e3a\u7d20\u6570\uff0c\u8fd4\u56detrue,\u5426\u5219\u8fd4\u56defalse * * * @param a * \u8f93\u5165\u7684\u503c * @return true\u3001false */ public static boolean isPrime(int a) { boolean flag = true; if (a < 2) {// \u7d20\u6570\u4e0d\u5c0f\u4e8e2 return false; } else { for (int i = 2; i <= Math.sqrt(a); i++) { if (a % i == 0) {// \u82e5\u80fd\u88ab\u6574\u9664\uff0c\u5219\u8bf4\u660e\u4e0d\u662f\u7d20\u6570\uff0c\u8fd4\u56defalse flag = false; break;// \u8df3\u51fa\u5faa\u73af } } } return flag; } }\u6587\u7ae0\u6765\u81ea\u79cb\u53f6\u4e3a\u4f55\u843d\u7684\u535a\u5ba2\u5206\u4eab

\u7528JAVA\u7f16\u5199\u53ef\u4ee5\u5224\u65ad\u4e00\u4e2a\u6570\u8303\u56f4\u5185\u7684\u6240\u6709\u7d20\u6570\u7684\u4ee3\u7801

判断number是否是素数有这么几种方法:
(1)用2至number-1之间的所有数去整除number,如果有一个能被整除,说明number是非素数;除非所有的数都不能被整除,才说明number是素数。
(2)用2至number/2之间的所有数去整除number,如果有一个能被整除,说明number是非素数;除非所有的数都不能被整除,才说明number是素数。
(3)用2至number的平方根之间的所有数去整除number,如果有一个能被整除,说明number是非素数;除非所有的数都不能被整除,才说明number是素数。

这3种的方法的效率是逐渐提高的。下面列出了第3种方法的实现:
import java.util.Scanner;

public class Test2 {

public static void main(String[] args) {
int number; // 输入的数字

Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt(); // 输入数字

if(isPrimeNumber(number)){
System.out.println(number + "是一个素数");
}
else{
System.out.println(number + "是一个非素数");
}
}

public static boolean isPrimeNumber(int num){
if(num < 2){
System.out.println("数据错误");
return false;
}

int k = (int)Math.sqrt(num); //num的平方根
int i;
for(i=2; i<=k; i++){ //依次用2..k之间的数去整除num,如果没有一个数能被整除,说明num是素数
if(num % i == 0){
break;
}
}
if(i > k){
return true;
}
return false;
}
}

如果对你的程序进行修改,也可这样:
public static void main(String[] args) {
int number;// 输入的数字
int j = 2;

Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt();// 输入数字

for(j=2;j<number;j++){

if(number%j == 0) {

System.out.println("这不素数");
break;
}
}
if(j>=number)
System.out.println("这是素数");
}

import java.util.Scanner;

public class PrimeNumber {

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数:");

int num = scanner.nextInt();  //输入的待判断的数字

if(isPrime(num))
System.out.println("数字 " + num + " 是素数");
else
System.out.println("数字 " + num + " 不是素数");
}

/**
 * 判断一个数是否是素数
 * 算法核心:
 *  定理: 如果n不是素数, 则n有一个因子d满足1< d<=sqrt(n)
    * 证明: 如果n不是素数, 则由定义:n有一个因子d满足1< d< n。 如果d大于sqrt(n), 则n/d是满足1< n/d<=sqrt(n)的一个因子
 *      
 *      由此可知:1. 小于等于2的不是素数    2. 2的倍数的数也不是素数    3. 如果从小到大开始遍历,一直到sqrt(n)还不能找到一个因子d,
 *                则可以说明该数是素数
 *      
 * @param num 待判断的数
 * @return 判断结果
 * */
private static boolean isPrime(int num) {
if(num <= 2 || num % 2 == 0)
return false;
for(int i = 3;i * i <= num;i += 2){
if(num % i == 0)
return false;
}

return true;
}

}


详细的解释已经写在上面的代码的注释中了,当然这种算法不算最优,但是比较简单易理解。当然更优的方案可以采用“筛选法”,具体的可以自行百度



我给你改了一下,你看看。 你判断一个数的话 用一个FOR循环做什么?

public static void main(String[] args) {

int number;// 输入的数字
int j = 2;

Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt();// 输入数字

if(number%j == 0) {
System.out.println("这不素数");

}else{
System.out.println("这是素数");
}
}

import java.util.*;

public class Test {
public static void main(String[] args) {
int number;// 输入的数字
int j = 2;
int tmp = 0;
Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt();// 输入数字
if (number < 2)
System.out.print("输入一个大于2的整数!");
else {
for (j = 2; j < number; j++) {
if (number % j == 0) {
tmp += 1;
}
}
if (tmp == 0)//这样刚好也能判断2
System.out.println("是素数");
else
System.out.println("不是素数");
}
}
}

                Scanner scann=new Scanner(System.in);
System.out.print("请输入一个数");
int num =scann.nextInt();
boolean numm=true;
for (int i = 2; i <num; i++) {
if(num%i==0){
numm=false;
}
}
String b=numm?"是质数":"不是质数";
System.out.println(b);


扩展阅读:java python ... c语言输出1到100的素数 ... javascript判断素数 ... java求100以内的素数 ... java ... java判断一个数为素数 ... java用while判断素数 ... java判断是否为素数 ... java程序判断1-100内素数 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网