质数类判断方法(蓝桥杯,循环分支题型)

质数定义:

        质数本身是指只有了1和它自己本身作为因数,不存在其他的任何的因数了。(注:

1本身并不是质数 )

        根据质数的定义,在进行代码的实现之前,我们可以先思考:

                                什么数一定不是质数?

                1>  在这样的思考之下,不难发现,凡是正偶数(2除外),都一定不是质数,可以首先判断要输入的数字是否是偶数,也大大简化了代码运算的时间,之后再进行下一步的分析

Scanner in =new Scanner(System.in);

int num =in.nextInt();

//对输入的数字判是非是偶数形式,并且其中并不包含2,如果是1也直接舍去

boolean  x=true;

if(num==1 || num%2==0 && num!=2){
    x=false;

}

                2>判断完成之后,已知的是正偶数都一定不是一个质数,那么它的除数,一定也不是一个这样的偶数,因为质数其中只有1跟它本身是因数,所以我们从3开始作为因数进行寻找:

Scanner in =new Scanner(System.in);

int num =in.nextInt();

//对输入的数字判是非是偶数形式,并且其中并不包含2,如果是1也直接舍去

boolean  x=true;

if(num==1 || num%2==0 && num!=2){
    x=false;

}
else{
//在这里,i+=2而不是i++,原因我们已经分析过了,在初步对于偶数筛选完毕后,若让偶数作为除数,那么所有的偶数,都不可能是作为其因数
    for(int i=3;i<num;i+=2){
        if(num%i==0){
            x=true;
            break;
            }
    }

}

                3>判断完成之后,输出是否是质数即可:

Scanner in =new Scanner(System.in);

int num =in.nextInt();

//对输入的数字判是非是偶数形式,并且其中并不包含2,如果是1也直接舍去

boolean  x=true;

if(num==1 || num%2==0 && num!=2){
    x=false;

}
else{
//在这里,i+=2而不是i++,原因我们已经分析过了,在初步对于偶数筛选完毕后,若让偶数作为除数,那么所有的偶数,都不可能是作为其因数
    for(int i=3;i<num;i+=2){
        if(num%i==0){
            x=true;
            break;
            }
    }
    if(x){
        System.out.println(num+"是一个质数");

        }
    else{

        System.out.println(num+"不是一个质数");
    }

}

                4>代码进一步改善。只需要排到sqer(num)即可

                        

Scanner in =new Scanner(System.in);

int num =in.nextInt();

//对输入的数字判是非是偶数形式,并且其中并不包含2,如果是1也直接舍去

boolean  x=true;

if(num==1 || num%2==0 && num!=2){
    x=false;

}
else{
//在这里,i+=2而不是i++,原因我们已经分析过了,在初步对于偶数筛选完毕后,若让偶数作为除数,那么所有的偶数,都不可能是作为其因数
    for(int i=3;i<=Math.sqar(num);i+=2){
        if(num%i==0){
            x=true;
            break;
            }
    }
    if(x){
        System.out.println(num+"是一个质数");

        }
    else{

        System.out.println(num+"不是一个质数");
    }

}

        时间长度O(sqrt(n))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值