如何使它贯穿我的整个范围?

时间:2017-09-12 12:51:36

标签: python python-3.x

def isprimelike(n):
    for a in range(2,n-1):
        if pow(a,n,n) == a%n:
            return True
        else:
            return False

当我检查n某个给定值时,它只检查2,然后判断它是真还是假,并且不检查该范围的其余部分。不知道如何检查范围的其余部分。

2 个答案:

答案 0 :(得分:1)

那是因为你在if-else块中使用return。您可能希望将return语句更改为print一个,表明它是否为素数。

如果您希望它返回True(如果所有都是素数)或False(如果至少有一个不是素数),请执行以下操作:

def isprimelike(n):
    for a in range(2,n-1):
        if pow(a,n,n) != a%n:
            print('One element is false')
            return False
    return True

print语句只是为了展示一些内容,但它并不相关。

答案 1 :(得分:0)

我会尝试制作一个列表,并允许你的for循环将范围的结果附加到列表中然后返回整个列表,这样你就可以访问所有结果。

编辑:完全错过了你的问题。这是编辑。

import sys
def isprimelike(n):
    resultlist = []
    for a in range(2,int(n)-1):
        if pow(a,int(n),int(n)) == a%int(n):
            result.append(True)
        else:
            result.append(False)
    return resultlist

n = sys.argv[1]
resultlist = isprimelike(n)
if True in resultlist:
    if False in resultlist:
        print('List contains both True and False')
        sys.exit(1)
    else:
        print('List is all True')
        sys.exit(1)
if False in resultlist:
    if True in resultlist:
        print('List contains both True and False')
    else:
        print('List is all False')