zoukankan      html  css  js  c++  java
  • 模运算的世界--费马小定理

    1.费马小定理

    p是素数的情况下,对任意整数x都有x^p=x(mod p),这个定理称为费马小定理。

    如果x无法被p整除,我们有x^(p-1)=1(mod p)

    上述式子变形后a^(-1)=a^(p-2)(mod p),因此可以通过快速幂运算求出逆元。

    在不是素数的情况下,可以有类似的欧拉定理可以使用。m=p1^(e1)*p2^(e2)*p3^(e3)....pn^(en)

    合数定理:一个数K能分解成p1^(q1)*p2^(q2)...

    那么,这个数的因子个数就是(1+q1)*(1+q2)*...*1+qk


    //求欧拉函数值。复杂度O(n½)
    int euler_phi(int n)
    {
        int res=n;
        for(int i=2;i*i<=n;i++)
        {
            if(n%2==0)
            {
                res=res/i*(i-1);
                for(;n%i==0;n/=i);
            }
        }
        if(n!=1)res=res/n*(n-1);
        return res;
    }
    //O(maxn)时间内·筛出1-n欧拉函数值的表
    const int maxn=100;
    
    int euler[maxn];
    void euler_phi2()
    {
        for(int i=0;i<maxn;i++)
        {
            euler[i]=i;
    
        }
        for(int i=2;i<maxn;i++)
        {
            if(euler[i]==i)
            {
                for(int j=i;j<maxn;j++)euler[j]=euler[j]/i*(i-1);
            }
        }
    }


  • 相关阅读:
    Post返回json值
    调用接口并获取放回json值
    c# 获取IP
    sqlserver2008不允许保存更改
    判断客户端是否是手机或者PC
    3.docker tomcat集群
    1.docker 安装
    Maven profiles 多环境配置
    MySQL 定时任务
    MyBatis 三剑客
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9387287.html
Copyright © 2011-2022 走看看