Python,使用递归确定素数

时间:2017-09-30 08:51:36

标签: python recursion primes

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万范围内的值,对于更大的值,它超过了递归深度。

有没有办法可以改进这个程序,以便在不增加递归深度的情况下处理更大的值?

0 个答案:

没有答案