码迷,mamicode.com
首页 > 其他好文 > 详细

51nod 1135 原根

时间:2016-07-15 21:51:39      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:

定义:技术分享技术分享,使得技术分享成立的最小的技术分享,称为技术分享对模技术分享的阶,记为技术分享


定理:如果模技术分享有原根,那么它一共有技术分享个原根。


定理:技术分享技术分享技术分享,则技术分享


定理:如果技术分享为素数,那么素数技术分享一定存在原根,并且模技术分享的原根的个数为技术分享


定理:技术分享是正整数,技术分享是整数,若技术分享技术分享的阶等于技术分享,则称技术分享为模技术分享的一个原根。


   假设一个数技术分享对于模技术分享来说是原根,那么技术分享的结果两两不同,且有技术分享,那么技术分享可以称为是模技术分享的一个原根,归根到底就是技术分享当且仅当指数为技术分享的时候成立。(这里技术分享是素数)


技术分享有原根的充要条件:技术分享,其中技术分享是奇素数。

 


求模素数技术分享原根的方法:技术分享素因子分解,即技术分享技术分享的标准分解式,若恒有


          技术分享


成立,技术分享就是技术分享的原根。(对于合数求原根,只需把技术分享换成技术分享即可)




#include <iostream>
#include <stdio.h>
#include <iomanip>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
long long d[1000];
long long dp[1000];
int kuai(long long x,long long n,long long m)
{
    long long i,j;
    long long s=1;
    for(i=0;;i++)
    {

        long long t=x;
        long long d=n%2;n=n/2;
        if(d==0) t=1;
        if(d!=0)
        {
            if(i==0) t=t*1%m;
            else
            {
                for(j=0;j<i;j++)
                t=t*t%m;
            }
        }
        s=s*t%m; if(n==0) break;
    }
    return s;
}
int main()
{
    long long p;
    while(cin>>p)
    {
        long long k=p-1;
        long long i;
        long long x=1;
        d[0]=k;
        d[1]=1;
        if(k%2==0)
        {
            d[2]=2;
            while(k%2==0) k=k/2;
        }
        long long l=3;
        for(long long j=3;j<=k;j+=2)
        {
            if(k%j==0)
            {
                d[l]=j;l++;
                while(k%j==0) k=k/j;
               //cout<<j<<endl;
            }
        }

        for(i=2;i<=p;i++)
        {
            long long z=1;
            for(long long j=2;j<l;j++)
            {
                long long t=(p-1)/d[j];

                long long r=kuai(i,t,p);
                //cout<<r<<' '<<t<<' '<<d[j]<<' '<<i<<endl;
                if(r==1) {z=0;break;}

            }

            if(z==1) {cout<<i<<endl;break;}
        }
    }
}


51nod 1135 原根

标签:

原文地址:http://blog.csdn.net/qq_32734731/article/details/51918959

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!