赞
踩
你好,欢迎查看我的第四个笔记。本人是某不知名大学数学系大一新生,由于对计算机感兴趣,所以跟着B站上老师学习python语言。每道题目我都尽我所能地讲清楚,如果有什么看不懂的地方欢迎在评论区留言,大家一起学习共同进步。
例如: | 输入:45 |
| 输出 45=3*3*5 |
若传入的参数n为质数,返回flag=Ture;反之返回False
详情见第一弹项目1:
- def zhishu(n):#创建一个判断质数的函数,若n为质数,flag=Ture;反之False
- flag=True
- for i in range(2,n):
- if n%i==0:
- flag=False
- break
- return flag
-
-
- num=int(input("num="))
- n=num#下面的操作都是对n做的,起到一个保护num变量的作用
- zhi=[]#创建一个空列表,用来存放质因数
-
- while not zhishu(n):#当n不是质数时
- for i in range(2,n):
- if n%i==0:#如果i是质因数
- zhi.append(i)#就把i放到zhi中
- n//=i#更新n,相当于 n=n//i
- break#条件成立的话就跳转到while,进行判断,再循环
- if zhishu(n):#最终的n一定会变成质数,这时n不再进入while循环,因此我们需要把这个质数放在zhi里面
- zhi.append(n)
为什么在第9行用n //=n,而不用n /=n呢?
如果写成n /=n 将报错如下。翻译过来就是 float 类型不能被翻译为int 类型,言下之意,我们这里需要的是 int 类型,因此使用整除符号(//)。
用for循环遍历zhi中的所有元素(即num的所有质因数),再按照 zhi[x]* 的格式输出
值得关注的是最后一项输出后没有尾巴的那个*,所以我们单独判断了一下。
-
- #下面就是输出语句了
- print(f"{num}=",end='')
- for x in range(len(zhi)):
- if x !=len(zhi)-1:
- print(f"{zhi[x]}*",end='')
- else:
- print(f"{zhi[x]}")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。