Python 如何继续外侧的for循环? def countPrimes(self,n): 如果n
尝试使用Python 如何继续外侧的for循环? def countPrimes(self,n): 如果n,python,primes,Python,Primes,尝试使用break而不是continue。看。基本上,break会将您从最小的封闭循环中带出来,将您带回到更高级别的循环中进行下一次迭代。另一方面,continue只会让你跳到下一个最小闭合循环的迭代,这样你就不会首先进入更高级别的循环。如果我正确理解了你的问题,你想知道如何打破内部c循环,避免其他代码,然后继续使用另一个num。与其他答案一样,您希望将break与一些智能布尔值结合使用。下面是循环的外观: def countPrimes(self, n): if n <=
break
而不是continue
。看。基本上,break
会将您从最小的封闭循环中带出来,将您带回到更高级别的循环中进行下一次迭代。另一方面,continue
只会让你跳到下一个最小闭合循环的迭代,这样你就不会首先进入更高级别的循环。如果我正确理解了你的问题,你想知道如何打破内部c
循环,避免其他代码,然后继续使用另一个num
。与其他答案一样,您希望将break
与一些智能布尔值结合使用。下面是循环的外观:
def countPrimes(self, n):
if n <= 1:
return 0
if n == 2:
return 1
count = 0
counted = [2, ]
for num in xrange(3, n+1, 2):
for c in counted:
if num % c == 0:
continue
count += 1
counted.append(num)
return count
这样,如果你遇到一个可以被c整除的num,你就打破了内部的
c
循环,避免将num添加到计数列表中。在进行时累积一个计数和一个素数列表是没有意义的。在某个地方引入了不匹配的机会。我对代码做了一些修改,使用了一些更具描述性的变量名。令人惊讶的是,清晰的名字能让算法变得更有意义。(至少对我来说是这样)
为了澄清这个问题,您想知道如何打破内部
c
循环并继续下一个num
,对吗?使用break
而不是continue
是,这是我的问题。break
将执行count+=1并计数。追加(num)
linesRight。您希望打破循环,在代码执行这两行之前捕获代码。那里的条件语句应该有用。哇,太好了。非常感谢。
for num in xrange(3, n+1, 2):
next_num = False
for c in counted:
if num % c == 0:
next_num = True
break
if next_num:
continue
count += 1
counted.append(num)
def primesUpTo(n):
primes = []
if n > 1:
primes.append(2)
for candidate in xrange(3, n+1, 2):
for prime in primes:
candidate_is_prime = candidate % prime
if not candidate_is_prime: # We're done with this inner loop
break
if candidate_is_prime:
primes.append(candidate)
return primes
print len(primesUpTo(100))