【Python 作品】因数与倍数。
又见面啦~{:10_298:}前几个月学习了因数与倍数,然后突然灵机一动,决定做一个关于因数与倍数的库。{:10_298:}
不料,我卡在了最小公倍数这一块……
那时,我可不想让我的 最小公倍数的函数 只能计算两个数的最小公倍数,
于是,我不会做了……
{:10_262:}
在经历了千辛万苦,冥思苦想之后……
我把其他的函数给优化了!……
{:10_262:}
算了,不骗你们,我也把最小公倍数做出来了!{:10_298:}
废话太多了,上代码!{:10_279:}
"""
因数与倍数
"""
def is_prime(x):
"""
判断 x 是不是质数 (x > 1)
如果 x <= 1, 返回 None
"""
if isinstance(x, int) and x > 1:
for i in range(2, x // 2 + 1):
if x % i == 0:
return False
return True
else:
return None
def primes(maxnum, minnum=2):
"""
返回从 minnum 到 maxnum 的质数列表
"""
primes = []
for i in range(minnum, maxnum + 1):
if is_prime(i):
primes.append(i)
return primes
def gen_primes(maxnum=None, minnum=2):
"""
生成从 minnum 到 maxnum 的质数列表
"""
if maxnum is None:
i = 0
while True:
if is_prime(i):
yield i
i += 1
else:
for i in range(minnum, maxnum + 1):
if is_prime(i):
yield i
def composites(maxnum, minnum=4):
"""
返回从 minnum 到 maxnum 的合数列表
"""
composites = []
for i in range(minnum, maxnum + 1):
if not is_prime(i):
composites.append(i)
return composites
def gen_composites(maxnum=None, minnum=4):
"""
生成从 minnum 到 maxnum 的合数列表
"""
if maxnum is None:
i = 0
while True:
if not is_prime(i):
yield i
i += 1
else:
for i in range(minnum, maxnum + 1):
if not is_prime(i):
yield i
def factors(x):
"""
返回 x 的所有因数,
如果 x < 1, 返回 None
"""
f = []
if isinstance(x, int) and x > 1:
for i in range(1, x + 1):
if x % i == 0:
f.append(i)
elif x == 1:
return
else:
return None
return sorted(f)
def prime_factors(x):
"""
返回 x 的所有质因数
"""
return (
if is_prime(x) else , *prime_factors(factors(x)[-2])]
)
def common_factors(x, y, *args):
"""
返回 x, y ( 等等 ) 的所有公因数
"""
fs = + ]
cf = fs
for i in fs:
cf &= i
return sorted(cf)
def common_multiple(x, y, *args):
"""
返回 x, y ( 等等 ) 的最小公倍数
"""
i = max(x, y, *args)
while True:
temp = sum()
if temp - 2 == len(args):
return i
i += 1
经典名句:
这个库我以后会继续完善,有问题可以提出哦~{:10_279:}
如果您喜欢这个库,可以给我评分哦~{:10_254:}
页:
[1]