计算机算法基础-质数相关(持续更新)

质数(素数)定义

质数(素数)是大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
前提1: 属于 大于1自然数即 0 与 1 都不是质数
前提2: 约数仅有 1 和 本身

互质(互素)定义

若有2个 或者 2个以上的整数的最大公因数为1, 则称他们为 互质
例如: 5 和 7 只有 一个公因数: 1, 因此5 与 7 互质

推论

对于正整数集: 1 与所有 正整数 互质
对于 整数集: 1 和 -1 与所有的整数互质, 并且, 它们是 仅与 0 互质的整数

性质

性质1

若 整数 a 与 b 互质, 则存在 整数 x, y, 使得 x ∗ a + y ∗ b = g c d ( a , b ) = 1 x*a + y*b = gcd(a,b)=1 xa+yb=gcd(a,b)=1 (贝祖公式)

性质2

若两个数互质,那么两个数一定没有相同的质因数
证明:
∵ a 与 b 互质 \because a与b互质 ab互质
∴ g c d ( a , b ) = 1 \therefore gcd(a,b) = 1 gcd(a,b)=1(互质的定义)
若 a , b 具有相同的质因数 p 若 a,b 具有相同的质因数 p a,b具有相同的质因数p
则根据算数基本定理:任何数都看见恶意写成有限素数(质数)的乘积。 e.g: 15 = 3 ∗ 5 15 = 3 * 5 15=35
a = p k ∗ p 1 k 1 ∗ p 2 k 2 ∗ . . . ∗ p n k n ( p , p 1 , p 2 . . . p n 为 a 的 n + 1 个质因数 ) a = p_{}^{k}*p_{1}^{k1}*p_{2}^{k2}*...*p_{n}^{kn}(p,p_{1},p_{2}...p_{n}为 a 的n+1个质因数) a=pkp1k1p2k2...pnkn(p,p1,p2...pnan+1个质因数)
b = p t ∗ q 1 t 1 ∗ q 2 t 2 ∗ . . . ∗ q m t m ( p , q 1 , q 2 . . . q m 为 b 的 m + 1 个质因数 ) b = p_{}^{t}*q_{1}^{t1}*q_{2}^{t2}*...*q_{m}^{tm}(p,q_{1},q_{2}...q_{m}为 b 的m+1个质因数) b=ptq1t1q2t2...qmtm(p,q1,q2...qmbm+1个质因数)
而此时 g c d ( a , b ) = p m i n ( k , t ) ≠ 1 gcd(a,b) = p^{min(k,t)} ≠ 1 gcd(a,b)=pmin(k,t)=1 (最大公因数的底数为 p p p,幂取 k , t k,t k,t的最小值> 0 0 0
与互质的定义矛盾, 因此两个数互质的时候没有相同的质因数
证毕

判断是否是质数的方法

  1. 当一个数不是质数的时候, 一定存在 至少2个非1 非本身的约数
    例如: 6, 6 /2 = 3, 两个非1非本身的约数 分别为: 2 和 3
    这两个约数可能是相等的
    例如: 4, 4/2 = 2, 分别为 2, 2;
    设该数为: n, 则: n = √n * √n, 因此 对于 n = a*b,
    较小的约数 <= √n <= 较大的约数, 因此 我们判断一个数是否是质数的时候, 只需要判断[2, √n]是否有约数即可

  2. 任意偶数n一定可以分解为 n = 2 * x 的形式, 因此质数首先不可能是偶数, 其次, 质数也一定不会被其他偶数整除
    证明: 对于质数 t, 偶数n, t / n = t / (2 * x) = (t / 2) * (1/x) ≠ 整数
    因而可知: 质数一定是奇数, 且不会被任意偶数整除, 即 约数只会是奇数, 因此判断是否是质数的时候, 只需要判断[2, √t] 中的奇数即可

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值