zoukankan      html  css  js  c++  java
  • 51nod 1135 原根

    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题

    设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数)
     
    给出1个质数P,找出P最小的原根。
    Input
    输入1个质数P(3 <= P <= 10^9)
    Output
    输出P最小的原根。
    Input示例
    3
    Output示例
    2

    欧拉函数+快速幂
    屠龙宝刀点击就送

    #include <cstdio>
    
    typedef long long LL;
    LL m,cnt[112441],k;
    bool qm(LL a,LL b,LL Mod)
    {
        LL r=1%b,base=a;
        while(b)
        {
            if(b&1)
            r=r*base%Mod;
            b>>=1;
            base=base*base%Mod;
        }
        return r==1;
    }
    int main()
    {
        scanf("%d",&m);
        LL tmp=m-1;
        for(LL i=2;i*i<=tmp;i++)
        {
            if(tmp%i==0)
            {
                while(tmp%i==0) 
                            tmp=tmp/i;
                cnt[k++]=i;
            }
        }
        if(tmp>1) 
            cnt[k++]=tmp;
        for(LL i=2;i<m;++i)
        {
            LL flag=1;
            for(LL j=0;j<k;++j)
            {
                if(qm(i,(m-1)/cnt[j],m))
                {
                    flag=0;
                    break;
                }
            }
            if(flag)
            {
                printf("%d",i);
                return 0;
            }
        }
        return 0;
    }    
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    select函数
    ascy_finder|base|cookie 代码测试
    正则表达式之道
    教务系统破解
    jquery API
    test
    如何获取和发送Http请求和相应
    header中ContentDisposition的作用
    Performance Testing 系列
    LINQ
  • 原文地址:https://www.cnblogs.com/ruojisun/p/6579656.html
Copyright © 2011-2022 走看看