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

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

质数定义:

       质数本身是指只有了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))

相关文章
|
6月前
|
机器学习/深度学习 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-476 计算质数和
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-476 计算质数和
51 0
|
6月前
第十四届蓝桥杯集训——JavaC组第十三篇——for循环
第十四届蓝桥杯集训——JavaC组第十三篇——for循环
60 0
|
6月前
|
算法
第十四届蓝桥杯集训——JavaC组第十二篇——while循环(循环四要素)
第十四届蓝桥杯集训——JavaC组第十二篇——while循环(循环四要素)
67 0
|
算法
蓝桥杯算法竞赛第一周题型总结
蓝桥杯算法竞赛第一周题型总结
75 0
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-491 回文数和质数
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-491 回文数和质数
33 0
|
6月前
|
算法
第十四届蓝桥杯集训——for——判断质数/素数
第十四届蓝桥杯集训——for——判断质数/素数
56 0
|
6月前
第十四届蓝桥杯集训——JavaC组第十篇——分支语句
第十四届蓝桥杯集训——JavaC组第十篇——分支语句
48 0
|
6月前
|
存储 Java
Java判断质数、求所有约数【蓝桥杯常用方法】
Java判断质数、求所有约数【蓝桥杯常用方法】
|
算法
算法 - 蓝桥杯并查集题型
算法 - 蓝桥杯并查集题型
【蓝桥杯集训·每日一题】AcWing 3792. 质数问题
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 筛质数 埃氏筛法 线性筛法
94 0