Python 检查素数,然后打印因子

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

这个问题要求检查一个数字是否是素数。如果不是,那么您必须创建一个单独的函数来打印素数的因子列表。确切的问题是:

编写两个函数(isPrime和primeFactors)。功能 如果isPrime的参数是素数,则返回True,否则返回False。函数primeFactors将返回一个数字的素因子列表

到目前为止,我已经:

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
当我