接受一个整型作为参数,返回该整数所有素数因子的列表

本文提供了一个Python模块,用于判断素数、获取整数的所有因子列表及进行素数因子分解。介绍了三个主要函数:isprime()用于判断素数;getfactorsex()返回指定整数的所有因子;primefactordecompose()实现素数因子分解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#/use/bin/env python
#-*-coding:utf-8-*-
"this is a custom module"

import math

def isprime(num):
   if num <= 1:
       return False
   value = int(math.sqrt(num) + 1)
   for n in range(2, value):
       if num % n == 0:
           break
   else:
       return True
   return False

def getfactorsex(num):
    """接受一个整型作为参数,
       返回它所有约数的列表,
       包括1和本身
    """
    if num <= 0:
        return None
    factors = [n for n in range(1, num+1) if (num % n == 0)]
    return factors

def primefactordecompose(num):
    """
        素数因子分解
        接受一个整型作为参数,返回该整数所有素数因子的列表。
        这个过程叫做求素因子分解,它输出的所有因子之积应该是原来的数字。
        注意列表里可能有重复的元素。例如输入20,返回结果应该是[2,2,5]
    """
    factors = getfactorsex(num)
    prime_list = []
    for n in factors:
        if isprime(n):
            prime_list.append(n)
    if len(prime_list) == 0:
        return None
    result = []
    product_ = 1
    for p in prime_list:
        product_ *= p
        result.append(p)
    if product_ != num:
        v = num / product_
        #再次分解
        temp_value = primefactordecompose(v)
        if temp_value is not None:
            result += temp_value

    return result

if __name__ == '__main__':

   print primefactordecompose(20)
   print primefactordecompose(128)
   print primefactordecompose(280)
   print primefactordecompose(1000)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值