繁体   English   中英

检查素数是否打印因子

[英]Checking if prime number then printing factors

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

编写两个函数(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

如果您想找到包括重复项在内的所有主要因素,即@Omari Celestine 的答案只会为findPrimeFactors(8)返回[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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM