关于判断是否为质数,有个简单的方法就是:用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语言编写的判断素数程序的详细解析: 理解素数定义 首先,我们需要明确...
素数看似简单、实则神奇,且奥秘无穷,数百年来,引无数数学英才为其着迷,毕生追求,并衍生出众多命题和分支,闻名遐迩的的哥德巴赫猜想和费马数,只是素数研究诸多命题沧海一粟、冰山一角。 而要研究素数规律,...
我们以找出100以内的素数为例,利用原理,我们可以首先排除偶数是素数,然后进一步判断奇数 实现将偶数标记为0,素数标记为1;(也可以用一个bool数组将偶数标记为false,奇数标记为true) 下面是全部代码 #...
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 排列与...
Miller_Rabin素数判断法,大整数快速因式分解算法(pollard_rho算法),生成指定位数的大质数或大整数算法等。 3、RSA算法库。使用上面两个库,实现RSA算法。实现了生成指定数位的密钥对,加密,解密,签名和验证,...
1不是素数啊素数的判断啊,也耳熟能详了,暴力枚举一下除1和本身的自然数是否会被整除。bool is_prime(int x) { for(int i=2;i<x;i++) if(x%i==0) return 2020-08-10 17:37:09 13 原创 高精度算法 文章目录1....
原理: 素数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。在加密应用中起重要的位置,比如广为人知的RSA算法中,就是基于大整数的因式分解难题,寻找两个超大的素数然后相乘作为...
接下来的问题就是判断素数,判断一个整数P(P>1)是否为素数最简单的方法就是看是否存在一个素数a(a(P))是P的约数,如果不存在,该数就为素数,由于在此题中1,n,所以要判断的数P不会超过100000000,sqrt(p),因此,...
① 用函数 int IsNumberEqual(int number) 检查输入的整数number各数码是否互不相等,全相等返回值为1否则为0; ② 用函数(void ntos (int number, int c[]) )把四位数整数number各位数码分别存入数组c ③ 用函数( ...
2有关素数的算法 1.3方程ax+by=c的整数解及应用 1.4 求a^b mod n 第二章 高精度计算 2.1高精度加法 2. 2 高精度减法 2.3高精度乘法 2.4 高精度除法 第三章 排列与组合 3.1加法原理与...
使用场合:任意数字与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、按...
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”的位...
(2) 编写一个主函数,输入一个整数,调用(1)中的函数,判断此整数是否为素数,并输出结果。 (3) 对于属于多函数程序,可以采用每个函数分别进行编辑、编译的方法,然后再连接、运行。如果编译有错时,可分别修改,...
11.1 判断点是否在多边形中…………………………………………………………158 11.2 判断线段是否在多边形内………………………………………………………159 11.3 计算几何典型算法………………………………...
2.2 判断素数 2.3 水仙花数 2.4 分解质因数 2.5 杨辉三角 2.6 学习成绩查询 2.7 求最大公约数与最小公倍数 2.8 完全平方数 2.9 统计字母、空格、数字和其它字符个数 2.10 求主对角线之和 2.11 完数求解 2.12 求s=a+...
如果单从目录来判断第2版中改动的范围的话,得出的结论很可能是改动不大。 但实际上,第2版中的改动远不止目录中显示的那样。以下列出了第2版中所做的主要改动(没有经过特别的排序): ·新增了Clifford Stein这位...
如果单从目录来判断第2版中改动的范围的话,得出的结论很可能是改动不大。 但实际上,第2版中的改动远不止目录中显示的那样。以下列出了第2版中所做的主要改动(没有经过特别的排序): ·新增了Clifford Stein这位...