-1

我正在尝试在 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意思?

4

2 回答 2

1

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

于 2021-12-26T19:12:56.890 回答
-2
import gmpy2
def solution():
    n = 2
    while True:
        yield n
        n = str(gmpy2.next_prime(n))

while True:
    print(solution())

试试这个方法

于 2020-11-19T04:04:24.610 回答