Python基础练习题之 正整数分解质因数

Python基础练习题之 正整数分解质因数

  • 题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

总结:需要用到循环,if条件判断句,以及函数调用。

# -*- coding: utf-8 -*-


 i=int(input("请输入一个正整数:"))
print("%d="%i,end="")
def index(i):   
    for k in range(2,i):
        if i%k==0:
            print(k,end="*")
            return(index(i//k))
    print('{}'.format(i))
   
index(i)

输出结果:

请输入一个正整数:56
56=2*2*2*7

注意:

  1. print(’{}’.format(i))的位置

print(’{}’.format(i))的位置是很重要的,决定了你是否理解了这个函数调用及循环的过程。举个例子,56=2 * 2 * 2 * 7当找出这个正整数分解的前面的质因数(2,2, 2)后,只剩最后一个最大的质因数7,调用递归函数index(7),而7是个质因数了,不可能再进行print(k)的执行,但是这个7是得作为质因数输出的,那么就得在最后循环结束后输出这个7,所以和print(’{}’.format(i))和for循环并列。

  1. print(k,end="*")是为了保持输出格式为i=k1 * k2 * k3 * k4的形式(这里循环只对k1,k2,k3有用,使得每个质因数后面就带上 * 号,k4是由 print(’{}’.format(i))输出的)
  2. 开头的 print("%d="%i,end="")要注意,写在index函数前面,因为index是个递归函数,如果这句代码写在index()里,那么每调用一次递归函数都会输出 “i=”。 end=" " 是为了让语句不换行,表示用空格结尾。因为python的print会默认从下一行语句开始打印。
  3. ’ { } ’ . format()是用来格式化字符串。

函数例子详解:

输入整数i=56

56=2 * 28-------输出2,调用index(28)
28=2 * 14-------输出2,调用index(14)
14=2 * 7---------输出2,调用index(7)
7------------------7是个素数,不可能再被分解,结束循环,print(7)

你可能感兴趣的:(Python程序练习)