`

判断整数是否为质数的原理

    博客分类:
  • java
 
阅读更多

关于判断是否为质数,有个简单的方法就是:用2到[根号N](中括号表示取整数部分)的所有数(当然,可以改成所有的质数)去检测,如果没有一个数能够整除N,那么N就一定是质数。
public static boolean isPrime(int num) {
     boolean prime = true; 
     int limit = (int) Math.sqrt(num);

     for (int i = 2; i <= limit; i++) {
       if (num % i == 0) {
           prime = false; 
           break;
       }
     } 
     return prime;
}

    我的问题就是:为什么“用2到[根号N](中括号表示取整数部分)的所有数”,用这些数去检测就足够了吗?要怎么证明?

    在网上看有人答说是一个定理.其实是2到[根号N]之间的素数(质数)去验算.算术基本定理,一个数若可以分解成几个素数的乘积则是合数.那么如果N不是合数就不能被分解,倘若被分解成两个数的乘积只需验证到根号N(因为根号N*根号N=N),这时如果有书能整除N那N就是合数,如果没有N就是素数或质数.
引出另一个定理:一个合数的最小正因子必小于等于根号N.
    我还是不太明白为什么“被分解成两个数的乘积只需验证到根号N”

解释:
     令N=√N*√N=x*y
    当存在质数x,y使N=x*y,且x>√N,则y<√N
    在验证到√N之前,就必然会验证到y,
    所以,不用验证到大于√N的质因数x
[/size]

 

分享到:
评论

相关推荐

    判断是否为素数的三种方法

    判断是否为素数的常用三种方法,基本原理是用该数处以其前面的所有数,若只能被1和其本身除尽,则是素数;否则不是!

    判断素数c语言.rar

    编写一个程序来判断一个给定的数是否为素数,不仅是对编程基础能力的考察,也是理解数学原理和提升逻辑思维能力的一个过程。 以下是一个用C语言编写的判断素数程序的详细解析: 理解素数定义 首先,我们需要明确...

    求任意正整区间的所有素数

    素数看似简单、实则神奇,且奥秘无穷,数百年来,引无数数学英才为其着迷,毕生追求,并衍生出众多命题和分支,闻名遐迩的的哥德巴赫猜想和费马数,只是素数研究诸多命题沧海一粟、冰山一角。 而要研究素数规律,...

    c++素数筛选法

    我们以找出100以内的素数为例,利用原理,我们可以首先排除偶数是素数,然后进一步判断奇数 实现将偶数标记为0,素数标记为1;(也可以用一个bool数组将偶数标记为false,奇数标记为true) 下面是全部代码 #...

    mathformulae.rar_adder_数论_线段 相交_计算几何 PDF_高精度

    1.2有关素数的算法 1.3方程ax+by=c的整数解及应用 1.4 求a^b mod n 第二章 高精度计算 2.1高精度加法 2.2高精度减法 2.3高精度乘法 2.4 高精度除法 练习 第三章 排列与组合 3.1加法原理与乘法原理 练习 3. 2 排列与...

    RSA算法的纯Python实现(源码)

    Miller_Rabin素数判断法,大整数快速因式分解算法(pollard_rho算法),生成指定位数的大质数或大整数算法等。 3、RSA算法库。使用上面两个库,实现RSA算法。实现了生成指定数位的密钥对,加密,解密,签名和验证,...

    最小生成树.pptx

    1不是素数啊素数的判断啊,也耳熟能详了,暴力枚举一下除1和本身的自然数是否会被整除。bool is_prime(int x) { for(int i=2;i&lt;x;i++) if(x%i==0) return 2020-08-10 17:37:09 13 原创 高精度算法 文章目录1....

    python素数筛选法浅析

    原理:  素数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。在加密应用中起重要的位置,比如广为人知的RSA算法中,就是基于大整数的因式分解难题,寻找两个超大的素数然后相乘作为...

    2025NOIP普及组.rar

    接下来的问题就是判断素数,判断一个整数P(P&gt;1)是否为素数最简单的方法就是看是否存在一个素数a(a(P))是P的约数,如果不存在,该数就为素数,由于在此题中1,n,所以要判断的数P不会超过100000000,sqrt(p),因此,...

    上海电机学院C语言实训答案

    ① 用函数 int IsNumberEqual(int number) 检查输入的整数number各数码是否互不相等,全相等返回值为1否则为0; ② 用函数(void ntos (int number, int c[]) )把四位数整数number各位数码分别存入数组c ③ 用函数( ...

    数学知识及其相关算法.pdf

    2有关素数的算法 1.3方程ax+by=c的整数解及应用 1.4 求a^b mod n 第二章 高精度计算 2.1高精度加法 2. 2 高精度减法 2.3高精度乘法 2.4 高精度除法 第三章 排列与组合 3.1加法原理与...

    javascript入门笔记

    使用场合:任意数字与1做按位与操作,可以判断奇偶性,结果为1,则为奇数,否则为偶数 0 :0 1 :1 2 :10 3 :11 4 :100 5 :101 5 & 1 101 001 ========== 001 4 & 1 100 001 ==== 000 2、按...

    算法心得:高效算法的奥秘(原书第2版).[美]Henry S.Warren,Jr(带详细书签).pdf

    3.3 判断取值范围是否跨越了2的幂边界 59 3.4 习题 61 第4章 算术边界 63 4.1 检测整数边界 63 4.2 通过加减法传播边界 65 4.3 通过逻辑操作传播边界 69 4.4 习题 73 第5章 位计数 74 5.1 统计值为“1”的位...

    C 程序指导书及实践指导

    (2) 编写一个主函数,输入一个整数,调用(1)中的函数,判断此整数是否为素数,并输出结果。 (3) 对于属于多函数程序,可以采用每个函数分别进行编辑、编译的方法,然后再连接、运行。如果编译有错时,可分别修改,...

    ACM程序设计培训教程

     11.1 判断点是否在多边形中…………………………………………………………158  11.2 判断线段是否在多边形内………………………………………………………159  11.3 计算几何典型算法………………………………...

    java自学之道

    2.2 判断素数 2.3 水仙花数 2.4 分解质因数 2.5 杨辉三角 2.6 学习成绩查询 2.7 求最大公约数与最小公倍数 2.8 完全平方数 2.9 统计字母、空格、数字和其它字符个数 2.10 求主对角线之和 2.11 完数求解 2.12 求s=a+...

    算法导论(part1)

    如果单从目录来判断第2版中改动的范围的话,得出的结论很可能是改动不大。 但实际上,第2版中的改动远不止目录中显示的那样。以下列出了第2版中所做的主要改动(没有经过特别的排序): ·新增了Clifford Stein这位...

    算法导论(part2)

    如果单从目录来判断第2版中改动的范围的话,得出的结论很可能是改动不大。 但实际上,第2版中的改动远不止目录中显示的那样。以下列出了第2版中所做的主要改动(没有经过特别的排序): ·新增了Clifford Stein这位...

Global site tag (gtag.js) - Google Analytics