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))