python如何返回除数,公约数,倍数

python如何返回除数,公约数,倍数

问题描述:

在本练习中,我们将只考虑严格的正整数。

编写一个plus_grand_prime_divisor (n) 函数,返回整数 n 的最大素数除数。
写一个函数pgcd (a, b)返回整数 a 和 b 的最大公约数。
编写一个函数ppcm (a, b)返回 a 和 b 的最小公倍数。
编写一个不可约函数(分子,分母),如果相应的分子/分母分数是不可约的,则返回True,否则返回False。

def prime(n):
    for i in range(2, int(pow(n, 0.5)) + 1):
        if n % i == 0:
            return False
    return True


# plus_grand_prime_divisor (n) 函数,返回整数 n 的最大素数除数。
# 有可能是n自身
def plus_grand_prime_divisor(n):
    for i in range(n, 1, -1):  # n -> 2
        if n % i == 0 and prime(i):
            return i
    return -1


def pgcd(a, b):
    if a % b == 0:
        return b
    else:
        return pgcd(b, a % b)


def ppcm(a, b):
    return a * b / pgcd(a, b)


# 一个分子、分母,除1外还有其他公约数的分数,叫做可约分数
def isReducible(a, b):
    gcdValue = pgcd(a, b)  # 最大公约数
    if gcdValue == 1: #  只考虑严格的正整数,所以gcdValue>=1
        return False
    else:
        return True


print(plus_grand_prime_divisor(70))


def prime(n):
    for i in range(2, int(pow(n, 0.5))):
        if n % i == 0:
            return False
    return True

def plus_grand_prime_divisor(n):
    for i in range(n - 1, 2, -1):
        if prime(i) and n % i == 0:
            return i
    return None
    
def pgcd(a, b):
    A = min(a, b)
    for i in range(A, 0, -1):
        if a % i == 0 and b % i == 0:
            return i
        
    return None

def ppcm(a, b):
    A = max(a, b)
    while True:
        if A %a == 0 and A % b == 0:
            return A
        else:
            A += 1
            
def fun(a, b):
    if a == b :return False
    r = pgcd(a, b)
    return not bool (0 if r == 1 else r)