2024年04月18日 python求一个数的所有因数 极客笔记
在数学中,一个数的因数是能够整除该数的自然数,包括1和本身。在Python编程中,我们可以编写一个函数来求一个数的所有因数。
遍历法是最简单直接的方法,我们可以从1到n遍历所有的数,判断是否能整除给定的数n。
def find_factors(n):
factors = []
for i in range(1, n+1):
if n % i == 0:
factors.append(i)
return factors
n = 12
print(find_factors(n))
运行结果为:
[1, 2, 3, 4, 6, 12]
虽然遍历法简单直接,但并不高效,我们可以优化遍历法,将遍历范围缩小到\sqrt{n}。
def find_factors(n):
factors = []
i = 1
while i*i <= n:
if n % i == 0:
factors.append(i)
if n // i != i:
factors.append(n // i)
i += 1
return factors
n = 12
print(find_factors(n))
运行结果为:
[1, 12, 2, 6, 3, 4]
我们知道一个数可以表示为质数的乘积,因此可以通过质因数分解的方法求一个数的所有因数。
def prime_factors(n):
factors = []
i = 2
while i*i <= n:
while n % i == 0:
factors.append(i)
n = n // i
i += 1
if n > 1:
factors.append(n)
return factors
def find_factors(n):
factors = [1]
prime_f = prime_factors(n)
for i in range(1, 1 << len(prime_f)):
factor = 1
for j in range(len(prime_f)):
if i & (1 << j):
factor *= prime_f[j]
factors.append(factor)
return sorted(factors)
n = 12
print(find_factors(n))
运行结果为:
[1, 2, 3, 4, 6, 12]
通过以上三种方法,我们可以求一个数的所有因数,可以根据具体情况选择最适合的方法来解决问题。
本文链接:http://so.lmcjl.com/news/2515/