import math
def even(num):
if num % 2 != 0:
return False
else:
return True
def is_div(num):
if num % 2 == 0 or num % 3 == 0 or num %5 == 0 or num % 7 ==0:
return True
else:
return False
counter = [0]
def is_prime1(num,a):
if a >= int(math.sqrt(num)):
return True
else:
if num % a == 0:
return False
else:
return is_prime1(num,a+2)
def is_prime(num,a):
counter[0] += 1
if a >= int(math.sqrt(num)):
return True
else:
if is_prime1(a,3):
if num % a == 0:
return False
else:
return is_prime(num,a+2)
else:
return is_prime(num,a+2)
def det():
a = 3
num = int(input("Enter the number? "))
if num == 2 or num == 3 or num == 5 or num == 7:
print(num, "is prime")
elif even(num):
print(num, "is not prime")
elif is_div(num):
print(num, "is not prime")
elif is_prime(num,a):
print(num, "is prime")
else:
print(num, "is not prime")
det()
print(counter[0])
我最近开始学习python,并在上周遇到过递归。
我编写了一个程序来确定一个数字是否是使用递归的素数。它适用于300万范围内的值,对于更大的值,它超过了递归深度。
有没有办法可以改进这个程序,以便在不增加递归深度的情况下处理更大的值?