📅  最后修改于: 2023-12-03 15:10:47.169000             🧑  作者: Mango
复合数是指除了1和本身以外,还可以被其他数整除的正整数。
例如,4是一个复合数,因为它可以被2整除。而7是一个质数,因为它只能被1和7整除。
要寻找除以N但严格小于N的最大复合数,可以从N-1开始倒序遍历,找出第一个复合数即可。
如何判断一个数是复合数呢?可以从2开始到该数的平方根的所有正整数中,检查是否能被整除。如果存在能被整除的数,则该数就是一个复合数。如果都不能被整除,则该数就是一个质数。
def is_composite(n):
if n < 4:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return True
return False
def find_largest_composite_divisible_by_n(n):
for i in range(n-1, 1, -1):
if i % n == 0 and is_composite(i):
return i
return -1
其中,is_composite(n)
函数可以判断一个数是否为复合数;find_largest_composite_divisible_by_n(n)
函数则是查找除以n但严格小于n的最大复合数。
assert find_largest_composite_divisible_by_n(4) == 6
assert find_largest_composite_divisible_by_n(6) == 4
assert find_largest_composite_divisible_by_n(7) == 4
assert find_largest_composite_divisible_by_n(8) == 14
assert find_largest_composite_divisible_by_n(11) == 8
以上是几个测试样例,可以验证一下代码的正确性。
本文介绍了如何查找除以N但严格小于N的最大复合数,主要思路就是判断一个数是否为复合数,然后倒序遍历即可。通过测试样例可以看出,代码的正确性还是很不错的。