1. 遍历法:
def find_divisors(n):
divisors = []
for i in range(1, int(n0.5) + 1):
if n % i == 0:
divisors.append(i)
if i != n // i:
divisors.append(n // i)
return sorted(divisors)
num = int(input("请输入一个整数:"))
print("约数:", find_divisors(num))
2. 使用数学公式:
def find_divisors_formula(n):
divisors =
for i in range(2, int(n0.5) + 1):
if n % i == 0:
divisors.append(i)
if i != n // i:
divisors.append(n // i)
return sorted(divisors)
num = int(input("请输入一个整数:"))
print("约数:", find_divisors_formula(num))
3. 使用递归方法:
def find_divisors_recursive(n, divisor=1):
if divisor > n // 2:
return []
if n % divisor == 0:
return [divisor] + find_divisors_recursive(n, divisor + 1)
else:
return find_divisors_recursive(n, divisor + 1)
num = int(input("请输入一个整数:"))
print("约数:", find_divisors_recursive(num))
以上代码中,`find_divisors`函数通过遍历从1到`n`的整数,检查它们是否能整除`n`,如果能,则将其添加到约数列表中。`find_divisors_formula`函数与`find_divisors`类似,但它利用了数学公式,只需要遍历到`n`的平方根即可。`find_divisors_recursive`函数使用递归方法实现同样的功能。
你可以选择其中任何一种方法来求一个数的约数。需要注意的是,这些方法的时间复杂度大致为O(sqrt(n)),因为它们只需要检查到`n`的平方根。