素数判断 java_Java实现方法判断一个数是不是素数(三种不同的方法,都有运行结果展示)...

素数的定义:

质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数

如何判定一个数是不是素数?

方法一:

思考思路

采用循环,使用大于1小于判定数的数去整除判定数

代码实现

import java.util.Scanner;

public class IsPrime {

public static void main(String[] args){

Scanner scan = new Scanner(System.in);

int number = scan.nextInt();

isPrime(number);

}

public static void isPrime(int number) {

int count = 0;

for(int i = 2; i < number; i++) {

if((number%i) == 0) {

count++;

}

语言

方法

7525

87D45yHt7h

8779

2005-04-02 21:21:13

}

if(count == 0) {

System.out.println(number + "是素数");

} else {

System.out.println(number + "不是素数");

}

}

}

运行结果

194326484_1_20200701095829709.png

存在问题

当数字较大时,循环次数较多,比较耗时,效率较低,所以不推荐使用 -

方法二:

思考思路

采用循环,使用大于1小于判定数的二分之一的数去整除判定数,(任何一个数的最大因数都小于等于它的二分之一)

代码实现

import java.util.Scanner;

public class IsPrime {

public static void main(String[] args){

Scanner scan = new Scanner(System.in);

int number = scan.nextInt();

isPrime(number);

}

public static void isPrime(int number) {

int count = 0;

for(int i = 2; i < number/2; i++) {

if((number%i) == 0) {

count++;

}

}

if(count == 0) {

System.out.println(number + "是素数");

} else {

System.out.println(number + "不是素数");

}

}

}

运行结果

194326484_2_2020070109583068.png

存在问题

相对上面的代码,效率提高了不少,可以采纳,但是不是最优做法。

方法三:

思考思路

采用循环,使用大于1小于判定数的开方的数去整除判定数

(因为如果一个数不是素数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,一个小于或等于它的平方根.并且成对出现)

代码实现

import java.util.Scanner;

import java.lang.Math;

public class IsPrime {

public static void main(String[] args){

Scanner scan = new Scanner(System.in);

int number = scan.nextInt();

isPrime(number);

}

public static void isPrime(int number) {

int count = 0;

for(int i = 2; i < Math.sqrt(number); i++) {

if((number%i) == 0) {

count++;

}

}

if(count == 0) {

System.out.println(number + "是素数");

} else {

System.out.println(number + "不是素数");

}

}

}

运行结果

194326484_3_20200701095830380.png

存在问题:

不好理解,但是代码效率好,推荐使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值