我编写了这个简单的函数,使用递归来测试给定数字n
是否为素数:
def is_prime2(n, div):
"""Recursive primality test"""
while div >= 2:
if n % div == 0:
print 'No, {number} is not prime.'.format(number = n, div = div)
return False
else:
return is_prime2(n, div-1)
else:
print 'Yes, {number} is prime indeed.'.format(number = n)
return 'True'
is_prime2(4,3)
is_prime2(5,4)
is_prime2(6,5)
它有效,但我包含的div
参数困扰着我。它只适用于递归步骤,但我不能为我的生活找出如何删除它而不必更改整个函数。我更喜欢这个函数只有一个参数:正在测试的数字。
我想有一种简单的方法:你能指出我正确的方向吗?
谢谢。
答案 0 :(得分:2)
以下是如何使用默认参数来实现目标:
def is_prime2(n, div = None):
"""Recursive primality test"""
if div is None:
div = n - 1
while div >= 2:
if n % div == 0:
print 'No, {number} is not prime.'.format(number = n, div = div)
return False
else:
return is_prime2(n, div-1)
else:
print 'Yes, {number} is prime indeed.'.format(number = n)
return 'True'
is_prime2(4)
is_prime2(5)
is_prime2(6)