python基础练习题(题目 将一个整数分解质因数。例如:输入90,打印出90=2*3*3*5)
2021-06-02 00:39 第二个卿老师 阅读(550) 评论(0) 编辑 收藏 举报day9
---------------------------------------------------------------
实例014:分解质因数
题目 将一个整数分解质因数。例如:输入90,打印出90=233*5。
分析:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数,算法思路网上找的,代码是自己敲的
1 import math 2 # 先判断数num是否为合数,如果是,选择最小的质数k=2,进行分解质因数的过程: 3 # (1)如果k小等于num,程序继续执行; 4 # (2)如果num能被k整除,说明k是num的一个因数,并用num除以k的商作为新的正整数num,重复执行第一步;否则用k+1作为k的值,重复执行第一步 5 6 # a = int(input("请输入除1外的一个正整数:")) 7 for a in range(2,100): 8 if a >1: 9 for i in range(2,int(math.sqrt(a))+1): 10 if a%i ==0: 11 print(f"{a}是合数,有分解质因数",end="") 12 k = 2 13 a1= a 14 list = [] 15 while k <= a1: 16 if a1==k and k!=2: 17 list.append(k) 18 break 19 elif a1%k ==0: 20 a1= a1/k 21 list.append(k) 22 continue 23 else: 24 k+=1 25 print("数为", list) 26 break 27 else: 28 continue 29 else: 30 print(f"{a}是质数,没有分解质因数")
看标准答案:根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质数。是对的,哈哈哈哈,我做复杂了,从14行看,比我少了一个循环
1 target=int(input('输入一个整数:')) 2 print(target,'= ',end='') 3 4 if target<0: 5 target=abs(target) 6 print('-1*',end='') 7 8 flag=0 9 if target<=1: 10 print(target) 11 flag=1 12 13 14 while True: 15 if flag: 16 break 17 for i in range(2,int(target+1)): 18 if target%i==0: 19 print("%d"%i,end='') 20 if target==i: 21 flag=1 22 break 23 print('*',end='') 24 target/=i 25 break