首页 > 编程语言 > 详细

数论:任意数求原根(python代码)

时间:2019-10-19 17:04:23      阅读:276      评论:0      收藏:0      [点我收藏+]
# 用辗转相除求最大公因子
def gcd(a,b):
    r=a%b
    while(r!=0):
        a=b
        b=r
        r=a%b
    return b

# 欧拉函数-暴力循环版
def euler(a):
    count=0
    for i in range(1,a):
        if gcd(a,i)==1:
            count+=1
    return count

def order(a,n,b):
#   输出b在mod(a)中的阶
#   n是mod(a)群的阶
    p=1
    while(p<=n and (b**p%a!=1)):
          p+=1
    if p<=n:
          return p
    else:
          return -1

# 求任意数原根
def primitive_root(a):
    n=euler(a)
    prim=[]
    for b in range(2,a):
        if order(a,n,b)==n:
            prim.append(b)
    print(prim)

测试结果:

技术分享图片

 

数论:任意数求原根(python代码)

原文:https://www.cnblogs.com/chong-blog/p/11704414.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!