【发布时间】:2021-07-07 19:54:16
【问题描述】:
请有人帮我解决这个我被困了好几个星期的hackerrank问题! 我正在定义一个有 2 个参数的函数。参数 'num' 是一个整数,是必须生成素数的范围,参数 'val' 包含 0 或 1。但它还有另一个条件: 'num' 值为 21 的质数是 - 2 3 5 7 11 13 17 19
- 如果 'val' 的值为 0,则产生以下值:3 7 13 19 [奇数索引值]
- 如果 'val' 为 1,则产量值应为:2 5 11 17 [偶数索引值]
我试过下面的代码
def primenum(num, val):
for i in range(3-val,num):
if(i > 2):
for j in range(2,i):
if(i%j == 0):
break
else:
yield i
【问题讨论】:
-
您是否尝试过首先生成直到
num的所有素数并从那里开始? -
记录你找到的素数数量,然后以 2 为模。
-
这看起来像您在编写代码时寻求帮助 - 从技术上讲,这不是 SO 的主题,因为这是一个关于一般答案的网站。如果您可以将其编辑为更一般的问题,我将不会关闭。如果你真的需要帮助编写这个函数,你可能想试试codereview.stackexchange.com
-
话虽如此,我会指出您不需要检查整个范围
(2, i)。对于任何 i,存在一个数 j,使得对于 i 的任何一对因子 x、y,x、y 中的至少一个小于或等于 j。您可以将其视为“i 的乘法中点”。我会把它作为一个有趣的练习让你找到那个中点:) -
@JonKiparsky codereview 不是为了帮助编写代码。
标签: python python-3.x generator yield