我想要添加一次值但是添加两次,如果我先打印该值,它只会添加一次

问题描述 投票:0回答:1

最重要的防御是priemcecker,它通过将数字除以第一个素数来检查你输入的数字是否为素数:2,如果它有一个小数,它将从defenition priemmaker获得下一个素数,但是priemmaker只有一次1个素数,以使其高效。如果除以第二个素数仍然有一个小数,它将添加第二个素数和第一个素数2。

因此,如果你想检查7是否为素数,它将首先除以2,看它不可分割,因此它将得到3的下一个素数,它将看到它仍然不可分割,因此它会将3加到列表中结论7是素数。

问题是,如果你添加一个数字,它会使用此代码添加两次,我认为这会降低效率。我尝试了很多东西,但我认为问题在于priemcheker的辩护。

如果我在尝试使用数字19时执行此代码,我会得到这些确切的结果

有人可以说为什么它会增加3次,5次,7次和11次两次。

def priemmaker (getal,lijst):

    for x in range (int(getal)):
        var2 = True

        for y in range (len(lijst)):

            if ((x+2)%lijst[y]) == 0:
                var2 = False
                break

        if var2 == True:
            lijst.append(x+2)
            break


    return lijst[(len(lijst)-1)]



def priemcheker (getal):

    lijst = [2]
    var1 = True

    while lijst[len(lijst)-1] < int(getal/2):
        if getal % lijst[len(lijst)-1] == 0:
            var1 = False
            break

        lijst.append(priemmaker(getal,lijst))
        print (lijst)

    return var1




def results (var1):
    if var1 == True:
        print ("het is een priemgetal")
    else:
        print ("geen priemgetal")


results (priemcheker(19))

[2, 3, 3]
[2, 3, 3, 5, 5]
[2, 3, 3, 5, 5, 7, 7]
[2, 3, 3, 5, 5, 7, 7, 11, 11]
it is a prime number
python
1个回答
0
投票

你不应该附加在priemcheker

def priemmaker (getal,lijst):
    for x in range (int(getal)):
        for y in lijst:
            if ((x+2)%y) == 0:
                break
        else:
            lijst.append(x+2)
            break
    return lijst[-1]



def priemcheker (getal):
    lijst = [2]
    while lijst[-1] < int(getal/2):
        if getal % lijst[-1] == 0:
            return False

        priemmaker(getal,lijst)
        print (lijst)

    return True




def results (var1):
    if var1:
        print ("het is een priemgetal")
    else:
        print ("geen priemgetal")


results (priemcheker(19))
© www.soinside.com 2019 - 2024. All rights reserved.