同余定理

部署运行你感兴趣的模型镜像

同余运算及其基本性质

    100除以7的余数是2,意思就是说把100个东西七个七个分成一组的话最后还剩2个。余数有一个严格的定义:假如被除数是a,除数是b(假设它们均为正整数),那么我们总能够找到一个小于b的自然数r和一个整数m,使得a=bm+r。这个r就是a除以b的余数,m被称作商。我们经常用mod来表示取余,a除以b余r就写成a mod b = r。
    如果两个数a和b之差能被m整除,那么我们就说a和b对模数m同余(关于m同余)。比如,100-60除以8正好除尽,我们就说100和60对于模数8同余。它的另一层含义就是说,100和60除以8的余数相同。a和b对m同余,我们记作a≡b(mod m)。比如,刚才的例子可以写成100≡60(mod 8)。你会发现这种记号到处都在用,比如和数论相关的书中就经常把a mod 3 = 1写作a≡1(mod 3)。
    之所以把同余当作一种运算,是因为同余满足运算的诸多性质。比如,同余满足等价关系。具体地说,它满足自反性(一个数永远和自己同余)、对称性(a和b同余,b和a也就同余)和传递性(a和b同余,b和c同余可以推出a和c同余)。这三个性质都是显然的。
    同余运算里还有稍微复杂一些的性质。比如,同余运算和整数加减法一样满足“等量加等量,其和不变”。小学我们就知道,等式两边可以同时加上一个相等的数。例如,a=b可以推出a+100=b+100。这样的性质在同余运算中也有:对于同一个模数m,如果a和b同余,x和y同余,那么a+x和b+y也同余。在我看来,这个结论几乎是显然的。当然,我们也可以严格证明这个定理。这个定理对减法同样有效。

    性质:如果a≡b(mod m),x≡y(mod m),则a+x≡b+y(mod m)。
    证明:条件告诉我们,可以找到p和q使得a-mp = b-mq,也存在r和s使得x-mr = y-ms。于是a-mp + x-mr = b-mq + y-ms,即a+x-m(p+r) = b+y-m(q+s),这就告诉我们a+x和b+y除以m的余数相同。

    容易想到,两个同余式对应相乘,同余式两边仍然相等:
    如果a≡b(mod m),x≡y(mod m),则ax≡by(mod m)。
    证明:条件告诉我们,a-mp = b-mq,x-mr = y-ms。于是(a-mp)(x-mr) = (b-mq)(y-ms),等式两边分别展开后必然是ax-m(…) = by-m(…)的形式,这就说明ax≡by(mod m)。

    现在你知道为什么有的题要叫你“输出答案mod xxxxx的结果”了吧,那是为了避免高精度运算,因为这里的结论告诉我们在运算过程中边算边mod和算完后再mod的结果一样。假如a是一个很大的数,令b=a mod m,那么(a * 100) mod m和(b * 100) mod m的结果是完全一样的,这相当于是在a≡b (mod m)的两边同时乘以100。这些结论其实都很显然,因为同余运算只关心余数(不关心“整的部分”),完全可以每一次运算后都只保留余数。因此,整个运算过程中参与运算的数都不超过m,避免了高精度的出现。

    在证明Fermat小定理时,我们用到了这样一个定理:
    如果ac≡bc(mod m),且c和m互质,则a≡b(mod m) (就是说同余式两边可以同时除以一个和模数互质的数)。
    证明:条件告诉我们,ac-mp = bc-mq,移项可得ac-bc = mp-mq,也就是说(a-b)c = m(p-q)。这表明,(a-b)c里需要含有因子m,但c和m互质,因此只有可能是a-b被m整除,也即a≡b(mod m)。

    可能以后还要用到更多的定理,到时候在这里更新。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

03-26
### 的数学定义 是一种数论中的重要概念,表示两个整数在某个特定条件下具有相的性质。具体来说,如果两个整数 \(a\) 和 \(b\) 对于正整数 \(m\) 的取模结果相,则称它们关于模 \(m\) 是的。形式化表达为: \[ a \equiv b \ (\text{mod} \ m) \] 这意味着当 \(a\) 减去 \(b\) 能被 \(m\) 整除时成立。 这一概念广泛应用于密码学、算法设计等领域[^1]。 --- ### 编程中的应用 #### 1. **加密技术** 关系是现代密码学的核心之一。例如,在RSA公钥加密算法中,利用大素数和欧拉定理来构建密钥对,其中大量运用了运算及其逆元求解方法。 #### 2. **哈希函数实现** 许多高效的哈希表数据结构依赖于基于原理分配存储位置的技术。通过计算键值相对于数组大小的数值决定元素应存放在哪个桶里。 #### 3. **日期时间处理** 某些情况下需要判断某年是否闰年或者星期几等问题也可以借助公式快速得出结论。 --- ### 示例代码展示 下面给出一段 Python 实现验证两数是否满足给定模块下的条件的例子: ```python def is_congruent(a, b, modulus): """Check if two numbers are congruent under the specified modulus.""" return (a % modulus) == (b % modulus) # Example usage: num1 = 17 num2 = 5 modulus_value = 6 if is_congruent(num1, num2, modulus_value): print(f"{num1} and {num2} are congruent modulo {modulus_value}.") else: print(f"{num1} and {num2} are NOT congruent modulo {modulus_value}.") ``` 上述脚本会输出 `17 and 5 are congruent modulo 6.` 因为此处两者都留下了一个共的剩部分即 '5' 当我们分别对他们执行 `%` 运算操作之后得到的结果一致. --- ### Shell 中的应用实例 虽然主要讨论的是高级语言如 Python 上面如何使用但是实际上 shell scripting 样支持此类逻辑编写如下所示简单例子展示了循环直到找到第一个符合条件(这里假设寻找最小非负整数使得该数平方等于输入参数对于固定基数取模后的结果): ```bash #!/bin/bash read -p "Enter number to find its square root equivalent:" n base=7 # example base value can be changed as per requirement. i=0 while true; do squared=$(( i * i )) remainder=$((squared % base)) if [[ $remainder -eq $n ]]; then echo "$i" break; fi ((i++)) done ``` 此 Bash Script 将不断测试增量变量直至发现首个匹配项为止并打印出来结束流程[^3]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值