判断是否为质数

 

思路

质数:只能被1和它本身整除的数

输入的数a

遍历一遍数2到a-1,如果都不能被数a整除,那么这个数为质数

优化:如果有一个数能被a整除,那么这个数就不是质数,不用再判断接下来的数能否整除

代码及解析

import java.util.Scanner;

    // 注意类名必须为 Main, 不要有任何 package xxx 信息
  public  class HomeWork02 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            // 注意 hasNext 和 hasNextLine 的区别
            while (in.hasNextInt()) { // 注意 while 处理多个 case
                int a = in.nextInt();
                System.out.println(a);

                boolean isFlag = true;  //判断是否为质数
                for(int i = 2; i < a; i++){  //遍历2-a-1的数,看看能否整除
                    if(a%i == 0){
                        isFlag = false;  //非质数
                        break;  //优化:如果有一个能够整除,则数a非质数,break终止for循环
                    }
                }
                if(isFlag){
                    System.out.println("true");
                }else{
                    System.out.println("false");
                }

            }
        }
    }

拓展:输出从m到n范围内所有的质数

1、从0/1/2到n范围的质数的输出

思路:需要两个for循环

第一个for循环用来遍历数a

第二个循环遍历2到a-1判断数a是否为质数

判断数a是否为质数后,重置isFlag用以判断下一个数a+1是否为质数

优化二:对于质数的来说,如果一个数a能够整除2到√a范围内的所有数,那么数a为质数

2、从m到n范围的质数的输出

修改i的初值即可

代码及解析  以输出100以内的质数为例

public class HomeWork02 {
    public static void main(String[] args) {

        boolean isFlag = true;  //判断是否为质数
        for (int i = 2; i < 100; i++) {
            for (int j = 2; j <= Math.sqrt(i); j++) {  //优化二
                if (i % j == 0) {
                    isFlag = false;  //非质数
                    break;  //优化:如果有一个能够整除,则数a非质数,break终止for循环
                }
                isFlag = true;  //isFlag的重置,用以判断下一个数是否为质数
            }
            if (isFlag) {
                System.out.print(i + " ");
            }
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值