Python 检查素数,然后打印因子
这个问题要求检查一个数字是否是素数。如果不是,那么您必须创建一个单独的函数来打印素数的因子列表。确切的问题是: 编写两个函数(isPrime和primeFactors)。功能 如果isPrime的参数是素数,则返回True,否则返回False。函数primeFactors将返回一个数字的素因子列表 到目前为止,我已经:Python 检查素数,然后打印因子,python,primes,Python,Primes,这个问题要求检查一个数字是否是素数。如果不是,那么您必须创建一个单独的函数来打印素数的因子列表。确切的问题是: 编写两个函数(isPrime和primeFactors)。功能 如果isPrime的参数是素数,则返回True,否则返回False。函数primeFactors将返回一个数字的素因子列表 到目前为止,我已经: def isPrime(x): if x==1: return False elif x==2: return True else: for i in r
def isPrime(x):
if x==1:
return False
elif x==2:
return True
else:
for i in range(2,x):
if (x % i==0):
return False
第一个函数检查数字是否为素数。但是,我不知道如何使primeFactors函数仅在结果不是质数时才起作用。既然您已经有了确定一个数是否为质数的函数,那么查找一个数的质数因子的函数如下所示:
def findPrimeFactors(number):
primeFactors = []
for i in range(2, number + 1):
if number % i == 0 and isPrime(i):
primeFactors.append(i)
return primeFactors
如果要查找包括重复项在内的所有基本因子,即将只返回
[2]
,而不是[2,2,2]
等
您可以这样做,请注意,我只检查每个函数中n
的平方根:
def is_prime(n):
if n < 2:
return False
else:
i = 2
while i * i <= n:
if n % i == 0:
return False
i += 1
return True
def prime_factors(n):
primes = []
i = 2
while i * i <= n:
if not is_prime(n):
n = n // i
primes.append(i)
else:
i += 1
if n > 1:
primes.append(n)
return primes
print(is_prime(9)) # False
print(prime_factors(8)) # [2, 2, 2]
print(prime_factors(37)) # [37]
print(prime_factors(56)) # [2, 2, 2, 7]
print(prime_factors(23424)) # [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 11]
def为素数(n):
如果n<2:
返回错误
其他:
i=2
当我