如何判断素数

前言:

本篇博客将带大家了解如何判断素数(和n、n/2、Math.sprt(n)进行比较),以及输出1~100间的素数

目录

如何判断素数

和n进行比较

n/2进行比较

和Math.sprt(n)进行比较

输出1~100间的素数


如何判断素数


首先,做题之前,我们得明白什么叫做素数。

所谓素数,就是它得因数除了1就是它本身。对了,1并不是素数


和n进行比较

思路:

要想判断一个数(假设为n)是不是素数,就是要求该数得因数是不是只有1和它本身。所以,最简单粗暴的方法就是通过一个循环,把从2开始到n-1之间的数(用i表示)全部遍历一遍,且遍历的同时都用n去除i,看是否满足n%i==0,但凡有一个满足,n都算不得是一个素数。

代码一:

import java.util.Scanner;
public class Main { 
   public static void main(String[] args) {
        //输入要判断的数:
        System.out.println("请输入待判断的数:");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        //进行判断:
        int i = 2;
        boolean isFlg = false;
        for (; i < n; i++) {
            if(n%i == 0){
                isFlg = true;
                break;
            }
        }
        if(!isFlg){
            System.out.println(n+"是素数!");
        }else{
            System.out.println(n+"不是素数!");
        }

    }
}

代码二:

import java.util.Scanner;
public class Main {   
 public static void main2(String[] args) {
        Scanner scanner =new Scanner(System.in);
        int n= scanner.nextInt();
        int i=2;
        for (; i < n; i++) {
            if(n%i==0){
                break;
            }
        }
        if(i==n){
            System.out.println(n+"是素数");
        }
    }
}

结果:


和n/2进行比较

思路:

通过观察,我们能够发现,和n去比较的话,需要循环的次数太多了,于是我们发现,一个数它如果不是素数的话,它定然存在因数在(1,n/2]之间,所以在上面的基础上,只需稍加改动即可。同样的,下面的和Math.sprt(n)比较也是一样的思路。(代码中的注释千万要好好看)

import java.util.Scanner;
public class Main {   
    public static void main4(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int i=2;
        for (; i <= n/2; i++) {
            //注意这里是:<=
            //如果只是<的话
            //4=1*4=2*2
            //那么它明显不会满足此情况,同样它也无法满足下面的情况,
            //然而,因为只有是素数才会打印,不打印默认不是素数,虽然凑巧感觉好像对了,本质上依旧是错的

            //再者,以7为例
            //7显然是一个素数
            //但是7/2=3;同时上面如果是i<n/2的话
            //意味着i只能加到2就得跳出循环
            //跳出循环以后,下面的n%i==7%2!=0
            //意味着不会输出7是素数,从输出结果看,默认7不是素数,显然错误
            //综上,要加上=
            if(n%i == 0){
                break;
            }
        }
        if(i > n/2){
            System.out.println(n+"是素数");
        }
    }
}

结果:


和Math.sprt(n)进行比较

Math.sprt(n)的意思是根号n

import java.util.Scanner;
public class Main {   
  public static void main5(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int i=2;
        for (; i <= Math.sqrt(n); i++) {
            if(n%i == 0){
                break;
            }
        }
        if(i > Math.sqrt(n)){
            System.out.println(n+"是素数");
        }
    }
}

结果:


输出1~100间的素数

思路:

有了上面如何判断一个数是否是素数,输出1~100之间的素数简直就是手到擒来的事情。只需要在判断的外面套一个for循环来保证判断的数的范围是在1~100间即可。

public class Main {    
  public static void main6(String[] args) {
        for (int i = 2; i <= 100 ; i++) {
            int j = 2;
            for ( ; j < i; j++) {
                if(i%j == 0){
                    break;
                }
            }
            if(j == i){
                System.out.print(i+" ");
            }
        }
    }
}

结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值