ckblt 发表于 2022-4-8 20:36:47

【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]
查看完整版本: 【Python 作品】因数与倍数。