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)