Python 校验素数
这段代码在大多数情况下都能工作,但当输入n=133时,它作为输出返回True。请告诉我错误。请注意,您的代码可能在循环的第一次迭代中返回True,您需要检查其他值。不确定为什么要查看这些值,您可以按如下方式编写此程序Python 校验素数,python,Python,这段代码在大多数情况下都能工作,但当输入n=133时,它作为输出返回True。请告诉我错误。请注意,您的代码可能在循环的第一次迭代中返回True,您需要检查其他值。不确定为什么要查看这些值,您可以按如下方式编写此程序 def isPrime(n): if n>1: for i in range(2,n): if (n % i==0): return False else:
def isPrime(n):
if n>1:
for i in range(2,n):
if (n % i==0):
return False
else:
return True
else:
return False
您可以使用以下方法测试代码
def isPrime(n):
if (n % 2 == 0):
return True
else:
return False
让我们看看你的循环是如何工作的。 对于值3,您的循环将有n%i检查,即
3%2,它不满足条件
。因此它将返回true
。
但是用于值,例如9
。循环将检查9%2=0
,它再次不满足条件,并且返回True
。
因此,使用类似的方法
prime = isPrime(133)
print(prime)
所以我运行了这个函数,这个函数对于任何奇数都会返回True,因为它在第一次迭代时返回false,这是检查它是否可以被2整除。总的来说,您的函数是非常错误的,下面是我将如何处理它
def isPrime(n):
if n>1:
for i in range(2,n):
if (n % i==0):
return False
else:
x=False
return x;
else:
return False
在这里,我只检查了素数因子直到数字的平方根(因为如果一个数字的素数因子大于其平方根(但不是数字本身),那么它的素数因子也必须小于其平方根,所以我们不需要进一步检查),当循环被某些东西整除时,我就退出循环。我检查了,它工作正常。循环的问题是,当您迭代for循环时,它总是返回True或False。为了防止这种情况,您应该创建一个计数器,相应地更改其值
def isPrime(n):
div = True
for i in range(2,int(n**0.5)):
if n%i==0:
div = False
break
return div
def PrimeChecker(n):
如果n<1:
返回值f'{n}小于1。所以,不是素数“#如果你
#需要。
其他:
对于范围(2,n)中的i:#主循环
计数器=真#计数器
如果n%i==0:#如果它变为可除。。。。
计数器=假#计数器变为假。
断开
返回计数器#返回False或True
希望对您有所帮助:)最高效的Primechecker程序:)
从数学导入sqrt
def checkprime(x):
如果x>2且x%2==0:
返回错误
elif x<2:
返回错误
其他:
对于范围(2,int(sqrt(x))+1)内的i:
如果x%i==0:
返回错误
返回真值
返回错误
检查n=9。看看你能不能在没有我们帮助的情况下解决这个问题。你肯定会学到更多。检查除2以外的任何数字…一个小优化将使用范围(2,n,2)
,除2之外的所有偶数都不是素数;)您的iPrime函数不正确,无法以这种方式返回True
def PrimeChecker(n):
if n < 1:
return f'{n} is less than 1. So, not prime' # You can add this if you
# want.
else:
for i in range(2, n): # The main loop
counter = True # The counter
if n % i == 0: # If it becomes divisible....
counter = False # Counter becomes false.
break # Break out of loop
return counter # Return False or True
from math import sqrt
def checkprime(x):
if x > 2 and x % 2 == 0:
return False
elif x < 2:
return False
else:
for i in range(2, int(sqrt(x)) + 1):
if x % i == 0:
return False
return True
return False