Java质数

需求:键盘录入一个正整数x,判断该整数是否为一个质数。

 本人思路:循环2到x-1,如果有数能将x除尽,则说明x不是质数,反之则是。

初始代码:

public class LoopTest3 {
    public static void main(String[] args) {        
         //1.键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个正整数:");
        int x = sc.nextInt();

        //2.循环判断除了1和本身还能否被除尽
        for (int i = 2; i < x; i++) {
                if (x % i == 0){
                    System.out.println(x + "不是质数");
                    break;}else{
                System.out.println(x + "是质数");
                }
        }
    }
}

运行后发现判断非质数部分判断无问题,但如果是质数则会多次打印 

改进代码:

public class LoopTest3 {
    public static void main(String[] args) {        
         //1.键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个正整数:");
        int x = sc.nextInt();

        //2.循环判断除了1和本身还能否被除尽
        for (int i = 2; i < x; i++) {
                if (x % i == 0){
                    System.out.println(x + "不是质数");
                    break;}
                if (i == x - 1){
                System.out.println(x + "是质数");
                }
        }
    }
}

 改进后直至循环到最后一位数,即x-1时才会输出判断为质数语句。

标记法

定义一个初始标记flag,默认为真,如果判断出能被1和本身以外的其他数字整除,则flag赋值为假,在循环外用flag的值输出判断质数语句

public class LoopTest3 {
    public static void main(String[] args) {        
         //1.键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个正整数:");
        int x = sc.nextInt();

        //2.循环判断除了1和本身还能否被除尽
        //循环结束,表示范围内数字都判断完毕
        //此时才能断定x为质数

        //标记思想
        //表示最初认为number是一个质数
        boolean flag = true;

        for (int i = 2; i < x; i++) {
            if (x % i == 0){
                flag = false;
                break;
            }
        }

        if (flag){
            System.out.println(x + "是一个质数");
        }else{
            System.out.println(x + "不是一个质数");
        }
    }
}

思考:这种方法相比之下结构更清晰,代码也更容易理解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿jjr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值