国学经典,永久流传《诗经朗诵全集》
《诗经朗诵全集》带你领略国学经典,永久咏传。...
2023-07-31
本文节选自《50个与数学有关的Python编程》。创作结束,最后一篇献上源码。欢迎点赞、关注、收藏。
目录
往期回顾
01 余数
02 约数与倍数
03 质数
正文
第4节 质因数分解
有个问题,素数不包含1,合数也不包含1,1招谁惹谁了?为什么阳间不要,阴间不收呢?这个问题可以用质因数分解来解答。
所谓质因数,其实就是任何一个除1外的正整数,它能分解成所有质数的乘积,如100=2×2×5×5——所有的因子都是质数。
质数还能再分吗?如果将2再分成1×2,那么就还能继续分下去,就成了一个死循环。
在很久以前,1确实被看成一个素数。比如大数学家欧拉就在给朋友的信件中写道:除1外所有的素数……现在数学在定义上认为1既不是素数也不是合数。
题1 直接分解
这个算法比较简单,从2开始,判断N能否被2整除,如果可以,则商作为新的被除数。
n = N = int(input("请输入一个大于1的正整数:")) factor_list = [] while True: sqrt_n = int(pow(n, 0.5)) flag = True for i in range(2,sqrt_n + 1): if n % i == 0: #①能整除 factor_list.append(i) #②把质数存入列表 n /= i #③把商作为新的被除数,继续分解 flag = False break if flag: factor_list.append(int(n)) break print(f"{N}可分解为{factor_list}")
那么问题来了,如数字16,它能2 整除,也能被4整除,4会不会被写入质因数列表呢?答案是:肯定不会。因为一个合数肯定被比它小的质数整除。16先被2整除剩下8,然后重新循环,8又被2整除剩下4,重新循环,4被2整除剩下2……根本没有被4整除的机会。
题2 递归分解
def get_factor(n): sqrt_n = int(pow(n, 0.5)) is_prime = True #1.默认n为素数 for i in range(2, sqrt_n + 1): if n % i == 0: #2.如果n不是素数,加入列表 factor_list.append(i) is_prime = get_factor(int(n/i)) #3.进入递归循环,直至新产生的n为素数为止 break if is_prime: #4.新的n为素数,递归结束。 factor_list.append(n) return False N = int(input("请输入一个大于1的正整数:")) factor_list = [] get_factor(N) print(f"可分解为{factor_list}")
以上内容就是为大家推荐的质数(质数为什么不包含1)最佳回答,如果还想搜索其他问题,请收藏本网站或点击搜索更多问题
内容来源于网络仅供参考版权声明:所有来源标注为小樱知识网www.cnfyy.com的内容版权均为本站所有,若您需要引用、转载,只需要注明来源及原文链接即可。
本文标题:质数(质数为什么不包含1)
本文地址:https://www.cnfyy.com/shcs/797653.html
相关文章
热点文章
2021年独生子女补贴新政策是真的吗(独生子女证有有效期吗)
2021年国庆节阅兵仪式几点开始几点结束(2021年国庆节还有阅兵吗)
鼠目寸光一点红是什么生肖动物(鼠目寸光一点红)指什么生肖,紧密
k0到k9的玩法大全(强制gc的玩法和注意事项)
入土为安是什么生肖《入土为安》打一个生肖动物,词语解释
浙江12月底全面停工是真的吗(浙江什么时候放假停工)
如何做t(t怎么把p做哭)
北京口碑最差的三甲医院(北京301医院最擅长什么)