费马小定理

二、费马小定理

费马小定理是数论中的一个定理:假如a是一个整数,p是一个质数,那么

是p的倍数(即(ap-a)%p==0  -->  ap%p=a%p),可以表示为

如果a不是p的倍数,这个定理也可以写成(同余式写法)

同余式

如果两个正整数 a和 b之差能被 n整除,那么我们就说 a和 b对模n同余,记作:

证明

任意取一个质数,比如13。考虑从1到12的一系列整数1,2,3,4,5,6,7,8,9,10,11,12,给这些数都乘上一个与13互质的数,比如3,得3,6,9,12,15,18,21,24,27,30,33,36。对于模13来说,这些数同余于3,6,9,12,2,5,8,11,1,4,7,10。这些余数实际上就是原来的1,2,3,4,5,6,7,8,9,10,11,12,只是顺序不同而已。
把1,2,3,…,12统统乘起来,乘积就是12的阶乘12!。把3,6,9,…,36也统统乘起来,并且提出公因子3,乘积就是312×12!。对于模13来说,这两个乘积都同余于1,2,3,…,12系列,尽管顺序不是一一对应,即312x12!≡12!mod 13。两边同时除以12!得312≡1 mod 13。如果用p代替13,用x代替3,就得到费马小定理xp-1≡1 mod p。

应用

  • 计算2^100除以13的余数
2^100除以13的余数
证明对于任意整数a而言

恒为2730的倍数。13减1为12,12的正因数有1, 2, 3, 4, 6, 12,分别加1,为2, 3, 4, 5, 7, 13,其中2, 3, 5, 7, 13为质数,
根据定理,

为2的倍数、为3的倍数、为5的倍数、为7的倍数、为13的倍数,即235713=2730的倍数。
  • 复制代码
    long long f(long a,long b,long n)  //定义函数,求a的b次方对n取模
    {
        int t,y;
        t=1;
        y=a;
        while(b!=0)
        {
            if((b&1)==1)
            t=t*y%n;
            y=y*y%n;
            b=b>>1;
        }
        return t;
    }
    复制代码

     

  •  

     



  • 链接:https://www.jianshu.com/p/e3df7e5d9c38
    來源:简书

     

     

    posted @   知道了呀~  阅读(11219)  评论(0编辑  收藏  举报
    编辑推荐:
    · 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
    · .NET Core 中如何实现缓存的预热?
    · 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
    · AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
    · 基于Microsoft.Extensions.AI核心库实现RAG应用
    阅读排行:
    · 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
    · 地球OL攻略 —— 某应届生求职总结
    · 提示词工程——AI应用必不可少的技术
    · Open-Sora 2.0 重磅开源!
    · 周边上新:园子的第一款马克杯温暖上架
    点击右上角即可分享
    微信分享提示