len()函数出错还是其他什么?

2024-10-03 23:29:26 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试着让我的程序循环这个pke方程,只把e变成一个列表。我以为我已经解决了这个问题,但是在我的print语句中,不是len,而是为每个指数打印一个数字,然后为每个指数打印一个数字。我很难看清自己的错误所在。我的计划是:

def greatest_common_divisor(a_int, b_int):
    if a_int > b_int:
        dividend = a_int
        divisor = b_int
    else: # b >= a
        dividend = b_int
        divisor = a_int
    remainder = dividend % divisor
    quotient = dividend // divisor
    while remainder != 0:
        dividend = divisor
        divisor = remainder
        remainder = dividend % divisor
        quotient = dividend // divisor
    return divisor # which is the gcd

p =5
q = 7
n = p*q
header = ["p","q","n","e","diminished","gcd","unique remainders","max remainders"]
print(header)

for e in range(12,27):
unique_remainders_list = []
for x in range(1,(n+1)):
    y = x**e % n
    diminished = (p - 1)*(q - 1)
    gcd = greatest_common_divisor(e, diminished)
    max_uni_val = n-1
    if not (y in unique_remainders_list):
        unique_remainders_list.append(y)
        print("{:>2} {:>4} {:>6} {:>4} {:>10} {:>9} {:>10} {:>16}".\
    format(p,q,n,e,diminished,gcd,len(unique_remainders_list),max_uni_val, end = ' '))

打印示例:

 ['p', 'q', 'n', 'e', 'diminished', 'gcd', 'unique remainders', 'max remainders']
   5    7     35   12         24        12          1               34
   5    7     35   12         24        12          2               34
   5    7     35   12         24        12          3               34
   5    7     35   12         24        12          4               34
   5    7     35   13         24         1          1               34
   5    7     35   13         24         1          2               34
   5    7     35   13         24         1          3               34
   5    7     35   13         24         1          4               34
   5    7     35   13         24         1          5               34
   5    7     35   13         24         1          6               34
   5    7     35   13         24         1          7               34
   5    7     35   13         24         1          8               34

所以我想我在e的范围上有问题,我只是不知道在哪里。你知道吗


Tags: inlen数字指数maxlistdivisordividend
1条回答
网友
1楼 · 发布于 2024-10-03 23:29:26

弄明白了,需要把我的打印报表移过去。我讨厌错过这么小的事情,但是谢谢你的帮助。你知道吗

for e in range(12,27):
 unique_remainders_list = []
 for x in range(1,(n+1)):
 y = x**e % n
 diminished = (p - 1)*(q - 1)
 gcd = greatest_common_divisor(e, diminished)
 max_uni_val = n-1
 if not (y in unique_remainders_list):
    unique_remainders_list.append(y)
 print("{:>2} {:>4} {:>6} {:>4} {:>10} {:>9} {:>10} {:>16}".\
format(p,q,n,e,diminished,gcd,len(unique_remainders_list),max_uni_val, end = ' '))

相关问题 更多 >