191010 python3分解质因数

# 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
# 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
# (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
# (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
# (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
方法一:利用列表append方法添加因数;
 1 num = int(input("请输入一个合数:"))
 2 n = num
 3 list1 = []
 4 
 5 for i in range(int(n/2)+1):
 6     # range对象只能是正整数,n/2可能产生小数
 7     # 循环次数:n最大的因子是本身(质数),最小的因子是2,
 8     # 所以最大循环次数n/2即可
 9     for j in range(2,n):
10         if num%j == 0:
11             list1.append(j)
12             num = num//j
13             break
14 '''
15 for j in range(2,n):    
16     # 如果j能被整除,则j是一个因子,但如果j能被整除多次,但只会记录一次;
17     if num%j == 0:
18         list1.append(j)
19         num = num//j
20         continue
21 '''
22 if len(list1)==0:
23     print("此数是质数,请重新输入另一个数。")
24     exit()
25 print(list1)
26 print('%d='%n,end='')
27 for k in range(len(list1)):
28     if k == len(list1)-1:
29         print('%s'%list1[k])
30     else:
31         print('%s*'%list1[k],end='')
View Code

方法二:利用format方法添加因数;

 1 def reduceNum(n):
 2     print('{}='.format(n),end='')
 3     if not isinstance(n,int) or n<=0:
 4         # isinstance判断数据n是否为int数据类型;
 5         print('请输入一个正确的数字!')
 6         exit(0)
 7     elif n in [1]:
 8         print('{}'.format(n))
 9     while n not in [1]:
10         for i in range(2,int(n+1)):
11             if n%i==0:
12                 n/=i
13                 if n==1:
14                     print(i)
15                 else:
16                     print('{}*'.format(i),end='')
17                 break
18 
19 #reduceNum(-90)
20 reduceNum(1)
View Code

 参见菜鸟教程:https://www.runoob.com/python/python-exercise-example14.html

猜你喜欢

转载自www.cnblogs.com/jakye/p/11647574.html