I am a teacher!

导航

习题解析之:分解质因数

【问题描述】

分解质因数只针对合数(非质数或者非素数,不包括1), 每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
输入一个合数

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
以列表形式输出质因子,各因子升序排序

示例‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
输入:
20

输出:
[2, 2, 5]

【编程思路】

        用循环从质数 p = 2 开始寻找 n 的所有质因子,每找到一个质因子 p(n % p == 0),将 p 加入到列表 ls ,同时将 n 除以 p,使得 n 中去掉了一个质因子 p ,这样 n 不断除以其质因子,最后 n 的值变为 1,结束循环;若整数 p 不是 n 的因子,则 p 加 1,找 n 的下一个质因子。

        由于质因子是从 2 开始找的,因此在列表 ls 中各因子一定升序排列。

        编写的源程序如下:

        image‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

posted on 2025-11-26 15:11  aTeacher  阅读(29)  评论(0)    收藏  举报