首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想添加一个值一次,但被添加了两次,如果我第一次打印值,它只得到添加一次

我想添加一个值一次,但被添加了两次,如果我第一次打印值,它只得到添加一次
EN

Stack Overflow用户
提问于 2018-12-24 05:20:46
回答 1查看 21关注 0票数 0

最重要的防御是priemcecker,它通过用第一个素数除以第一个素数来检查你输入的数字是否是质数: 2,如果有小数,它将从defenition priemmaker获得下一个质数,但priemmaker一次只生成一个质数,以使其有效。如果除以第二个质数还有一个小数,它会将第二个质数与第一个质数相加2。

所以如果你想检查7是否是质数,它首先会被2整除,所以它会得到下一个质数,也就是3,它会发现它仍然是不可除的,所以它会把3加到列表中,而不是得出7是质数的结论。

问题是,如果你添加一个数字,它会在代码中添加两次,我认为这会降低效率。我尝试了很多东西,但我认为问题出在对priemcheker的防御上。

当我尝试对数字19执行此代码时,我会得到这些确切的结果

有人能说出为什么它加了3,5,7和11两次吗?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2018-12-24 05:48:57

您不应该追加到priemcheker

代码语言:javascript
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53907250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档