Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在这个代码行中,95怎么会是素数?_Python_Function_While Loop - Fatal编程技术网

Python 在这个代码行中,95怎么会是素数?

Python 在这个代码行中,95怎么会是素数?,python,function,while-loop,Python,Function,While Loop,我有一个家庭作业要我找出素数,直到找到一个给定的数,然后我把这个代码写出来作为答案 def count_primes(num): primes = [2] x = 3 if num < 2: return 0 while x <= num: for y in range(3,x,2): if x%y == 0: x += 2 else:

我有一个家庭作业要我找出素数,直到找到一个给定的数,然后我把这个代码写出来作为答案

def count_primes(num):
    primes = [2]
    x = 3
    if num < 2:
        return 0
    while x <= num:
        for y in range(3,x,2):
            if x%y == 0:
                x += 2
        else:
            primes.append(x)
            x += 2
    print(primes)
正如我在输出中看到的101一样,我在“第9行”之后添加了
break
命令行,这也让我放弃了95作为输出,即:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

那么,在这个代码中,
break
line blocked 95是一个素数,这是怎么回事呢?

这种情况的发生是因为你从来没有重置过y值。 当93可以被31整除时,你把ox的值增加2

下一个比较是95%33,它永远不会回到5

def count_primes(num):
    primes = [2]
    x = 3
    if num < 2:
        return 0
    while x <= num:
        for y in range(3, x, 2):
            if x % y == 0:
                x += 2
                break
        else:
            primes.append(x)
            x += 2
    print(primes)
def count_prime(num):
素数=[2]
x=3
如果num<2:
返回0

当x看到这个可爱的博客寻求帮助时。你在哪里困惑?您已经就您的计划提出了一个整体性问题,但手头的问题来自内部逻辑。正如发布指南所告诉您的,我们希望您已经尝试自己解决这个问题,但我在您的发布中没有看到任何证据。@Prune我已经解决了在第10行写入“break”的问题,我不希望您调试我的代码行。我只是想问一下“break”命令背后的逻辑,以了解为什么会发生这种情况。下次请尽量友好一些。在壳牌公司进行了几次试验后,我可以证实这一点,这是我一直在寻找的绝对答案。非常感谢
def count_primes(num):
    primes = [2]
    x = 3
    if num < 2:
        return 0
    while x <= num:
        for y in range(3, x, 2):
            if x % y == 0:
                x += 2
                break
        else:
            primes.append(x)
            x += 2
    print(primes)