美文网首页
python每日打卡题012质因子

python每日打卡题012质因子

作者: 软件开发技术修炼 | 来源:发表于2025-05-28 10:46 被阅读0次

挑战每日打卡python基础题
come with me !

今日练习:找出一个自然数的所有质因子

方案一:
#输入一个正整数,输出它的所有质数 比如 180 = 2*5*3*3*2

a = int(input("请输入一个自然数:"))
y = 2
list = []

while a != y:    # 当a =1,进入无限循环中
    if a%y == 0: # 转为浮点型了
        list.append(y)
        a /= y   #a变小
    else:
        y += 1

list.append(int(a))
print(list)

优化一:while a != y: # 当a =1,进入无限循环中
优化二:while y <= n: 升级为 while y**y <= n: #具体见上一篇 python每日打卡题011素数升级版
优化三:首先判断输入的数是大于0的自然数,再对自然数中的偶数、奇数区分后求质因子

def prime_factors(n):
    factors = []
    # 检查偶数因子
    while n % 2 == 0:   # 除2以外,所有的偶数都有因子
        factors.append(2)
        n = n //2

    # 检查奇数因子
    y = 3
    while y**y <= n:
        while n % y == 0:
            factors.append(y)
            n = n // y
        y += 2     #如果一个数能被最小的质因数 3,5,7整除,再进行循环

    # 如果n是大于2的质数
    if n > 2:
        factors.append(n)

    return factors


n = int(input("请输入一个自然数:"))

if n < 1:
    print("请输入一个大于0的自然数。")
else:
    print(f"{n}的质因子是:{prime_factors(n)}")

相关文章

  • 每日必做

    晨起喝一杯水 背英语单词 齐麟资析20题,打卡 整齐使用草稿纸 每日常识10题 每日言语15题 每日判断15题 学...

  • 质因子分解(素数埃氏筛法)[PAT A1059]

    埃氏筛法原理质因子分解结论

  • 04 分解质因子

    首先任意大于等于2的整数都可以分解为一连串质数的乘积,而这一连串质数即成为该整数的质因子,类似于: 我们可以通过递...

  • 质因子分解模板

    模板思路:1、枚举1~sqrt(n)范围内的所有质因子P,判断P是否是n的因子(1)如果是因子,那么给fac数组中...

  • 丑数

    把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7...

  • 丑数

    把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7...

  • 面试题49:丑数

    把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7...

  • 剑指Offer32 丑数(数字分解)

    把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7...

  • 算法笔记(8)| 数学问题(2)

    1.质因子分解 质因子分解是指将一个正整数n写成一个或多个质数的乘积形式,例如180=2x2x3x3x5。由于质因...

  • 2020-05-31华为机考题-质数因子

    题目描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 ...

网友评论

      本文标题:python每日打卡题012质因子

      本文链接:https://www.haomeiwen.com/subject/vcxlwjtx.html