import math
def is_prime(num):
if num < 2:
return False
for i in range(2, int(math.sqrt(num))+ 1):
if num % i == 0:
return False
return True
Primes似乎是一个热门话题,但是在我正在学习Python的书中,我在21节中的第6章和在循环中教授的迭代章节中。虽然我明白他们做了什么,但我还没有学习循环。所以,假设我还没有学习for循环,只有当/ elif / else语句和while循环作为我的工具时才会给出。如何使用上述工具将for行代码更改为更简单的代码?在提出这个问题时,我很快就提出了这个代码:
def formula(num):
i = 2
while i >= 2:
return int(math.sqrt(num)+ 1)
def is_primetwo(num):
i = 2
if num < 2:
return False
formula(num)
if num % i == 0:
return False
return True
它可以工作,但这是for循环的简单版本还是有更简单的东西,我不需要在函数中包装函数?
答案 0 :(得分:0)
如下:
from math import sqrt
def is_prime(num):
if (num < 2):
return False
i = 2
limit = int(sqrt(num) + 1)
while (i <= limit):
if num % i == 0:
return False
i = i + 1
return True
答案 1 :(得分:0)
不确定这是否是你想要的,但是for循环:
sets
可表示为:
a = [2, 3]
b = [1, 2, 3, 4]
set(a).issubset(set(b))
确定for i in range(2, int(math.sqrt(num))+ 1):
if num % i == 0:
return False
return True
一次可能是一个好主意:
i = 2
while i < int(math.sqrt(num))+ 1):
if num % i == 0:
return False
i += 1
return True
答案 2 :(得分:0)
当然,您不需要替换for循环的函数。
所以你有这个
for i in range(2, int(math.sqrt(num))+ 1):
这是你的for循环。花点时间思考它在做什么。
1。)它取变量i
,并以2的值开始。
2。)通过检查i
是否小于(num
的平方根)加1
3.。)每次循环,它都会向i
添加一个。
我们可以使用while循环来完成所有这些事情。
这是原来的
for i in range(2, int(math.sqrt(num))+ 1):
if num % i == 0:
return False
让我们重命名第二行和第三行loop contents
,以便我们重点关注循环部分,而不是我们对变量i
执行的逻辑。 num
。
for i in range(2, int(math.sqrt(num))+ 1):
loop contents
好吧,现在让我们重新安排它成为一个while循环。我们需要先将i
设置为2。
i = 2
现在我们要检查i
是否在我们想要的范围内
i = 2
while i <= int(math.sqrt(num) + 1):
loop contents
现在我们几乎已经设定了,我们只需要让i
实际改变,而不是永远保持2的价值。
i = 2
while i <= int(math.sqrt(num) + 1):
loop contents
i = i + 1
你的例子似乎做了一些这些元素,但这种方式是一种简单的方法,并且不需要额外的功能。可能是range()
函数令人困惑。请记住,for循环正在做三件事;将变量设置为初始值,检查条件(一个变量小于另一个变量),并将变量增加到比先前大一个以再次运行循环。