Python 质数检查器功能有故障

Python 质数检查器功能有故障,python,primes,Python,Primes,我写了一个函数来计算一个数字是否是素数,但是尽管尝试,它似乎无法给出正确的响应。它还打印正在递增的n值。下面是函数的代码(顺便说一句,用Python编写): 如果我输入 isPrime(17) 函数返回 1 False 这里出了什么问题?每个数字都可以被1和自身整除。素数是一个自然数,除了1和它本身之外,没有任何正因子。因此,如果以1开始for循环,每个x数字将在第一次迭代中通过条件x%1==0,返回False 要修复它,您需要以2而不是1开始循环。另外,作为旁注,您只需要从2循环到sqrt

我写了一个函数来计算一个数字是否是素数,但是尽管尝试,它似乎无法给出正确的响应。它还打印正在递增的n值。下面是函数的代码(顺便说一句,用Python编写):

如果我输入

isPrime(17)
函数返回

1
False

这里出了什么问题?

每个数字都可以被1和自身整除。素数是一个自然数,除了1和它本身之外,没有任何正因子。因此,如果以1开始for循环,每个
x
数字将在第一次迭代中通过条件
x%1==0
,返回
False


要修复它,您需要以2而不是1开始循环。另外,作为旁注,您只需要从2循环到
sqrt(x)
,因为如果存在一个数
q>sqrt(x)
除以
x
,那么还必须有一个数
p=x/q
也除以
x
,和
p

素数的定义是错误的只是一个旁注:有很多方法可以优化素数检查器,但一个简单的方法是:只检查x的平方根。因此,从math import sqrt,floor添加
,然后将您的范围更改为
范围(2,floor(sqrt(x))
您的原始逻辑,作为pythonic一行:
def isPrime(x):返回x>1和全部(x%n表示xrange(2,x)中的n))
相关:
1
False