Python 练习实例14

[复制链接]
1131|0
 楼主| cooldog123pp 发表于 2021-1-25 10:29 | 显示全部楼层 |阅读模式
题目:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。
程序源代码:
实例(Python 2.0+)
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-

  3. def reduceNum(n):
  4.     print '{} = '.format(n),
  5.     if not isinstance(n, int) or n <= 0 :
  6.         print '请输入一个正确的数字 !'
  7.         exit(0)
  8.     elif n in [1] :
  9.         print '{}'.format(n)
  10.     while n not in [1] : # 循环保证递归
  11.         for index in xrange(2, n + 1) :
  12.             if n % index == 0:
  13.                 n /= index # n 等于 n/index
  14.                 if n == 1:
  15.                     print index
  16.                 else : # index 一定是素数
  17.                     print '{} *'.format(index),
  18.                 break
  19. reduceNum(90)
  20. reduceNum(100)
实例(Python 3.0+)
  1. #!/usr/bin/python3

  2. def reduceNum(n):
  3.     print ('{} = '.format(n), end=" ")
  4.     if not isinstance(n, int) or n <= 0 :
  5.         print ('请输入一个正确的数字 !')
  6.         exit(0)
  7.     elif n in [1] :
  8.         print ('{}'.format(n))
  9.     while n not in [1] : # 循环保证递归
  10.         for index in range(2, n + 1) :
  11.             if n % index == 0:
  12.                 n //= index # n 等于 n//index
  13.                 if n == 1:
  14.                     print (index )
  15.                 else : # index 一定是素数
  16.                     print ('{} *'.format(index), end=" ")
  17.                 break
  18. reduceNum(90)
  19. reduceNum(100)
以上实例输出结果为:
  1. 90 =  2 * 3 * 3 * 5
  2. 100 =  2 * 2 * 5 * 5



您需要登录后才可以回帖 登录 | 注册

本版积分规则

2345

主题

7773

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部