def isprimelike(n):
for a in range(2,n-1):
if pow(a,n,n) == a%n:
return True
else:
return False
当我检查n
某个给定值时,它只检查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')