【问题标题】:Prime number generator using gmpy2 producing error使用 gmpy2 产生错误的素数生成器
【发布时间】:2020-11-19 03:19:30
【问题描述】:

我正在尝试在 Jupyter Notebooks 中测试一个使用 gmpy2 生成素数的函数,但我得到了以下输出。

import gmpy2
def solution(i):
    n = 2
    while True:
        yield n
        n = str(gmpy2.next_prime(n))

for i in solution(1):
    print(i)
    input()
2

3

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-14-e0db74781d33> in <module>
      6         n = str(gmpy2.next_prime(n))
      7 
----> 8 for i in solution(1):
      9     print(i)
     10     input()

<ipython-input-14-e0db74781d33> in solution(i)
      4     while True:
      5         yield n
----> 6         n = str(gmpy2.next_prime(n))
      7 
      8 for i in solution(1):

TypeError: next_prime() requires 'mpz' argument

为什么函数成功输出序列中的前两个数字(2 和 3)但随后产生错误? mpz 是什么意思?

【问题讨论】:

标签: python gmpy


【解决方案1】:

n = str(gmpy2.next_prime(n)) 中,您将 n 更改为字符串。这就是它产生 2 和 3 的原因,其中 2 是整数,3 是字符串,但 gmpy2.next_prime(n) 需要整数。

【讨论】:

    【解决方案2】:
    import gmpy2
    def solution():
        n = 2
        while True:
            yield n
            n = str(gmpy2.next_prime(n))
    
    while True:
        print(solution())
    
    

    试试这个方法

    【讨论】:

    • 这不会打印出任何东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    相关资源
    最近更新 更多