python基础练习题(题目 将一个整数分解质因数。例如:输入90,打印出90=2*3*3*5)

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
原文地址:https://www.cnblogs.com/qgc1995/p/14839481.html