Python练习题 010:分解质因数
【Python练习题 010】将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
---------------------------------------------------------------
蛮以为这又是道送分题,结果费了我1个半小时才解出来!
一开始我简单地以为,只要将输入的整数拿个数字列表挨个除一遍,能整除的就可以收为质因数。但事实上是行不通的,因为这样会连同 4、6、9 这样的数字也收进去,而当质因数有重复时(比如12=2*2*3),就会被遗漏掉。
基于以上的考虑,转换思路:还是将输入的整数(n)拿个数字列表挨个除,但要多除几遍,而且每遍除的时候,一旦出现质因数,立即把这个数字收了,把输入的数字除以这个质因数并重新赋值给n,然后停止这个循环,进入下一个循环。如此便能解决上述的问题。
最后还有一点需要注意的:如果这个数字已被任意质因数整除过,那么走完所有循环之后,最后的 n 也必然是其中的一个质因数,应该把它一并收进列表里。
代码如下:
n = num = int(input('请输入一个数字:')) #用num保留初始值
f = [] #存放质因数的列表
for j in range(int(num/2)+1): #判断次数仅需该数字的一半多1次
for i in range(2, n):
t = n % i #i不能是n本身
if t == 0: #若能整除
f.append(i) #则表示i是质因数
n = n//i #除以质因数后的n重新进入判断,注意应用两个除号,使n保持整数
break #找到1个质因数后马上break,防止非质数却可以整除的数字进入质因数列表
if len(f) == 0: #若一个质因数也没有
print('该数字没有任何质因数。')
else: #若至少有一个质因数
f.append(n) #此时n已被某个质因数整除过,最后一个n也是其中一个质因数
f.sort() #排下序
print('%d=%d' % (num, f[0]), end='')
for i in range(1,len(f)):
print('*%d' % f[i], end='')
输出结果如下:
请输入一个数字:1482
1482=2*3*13*19
分解质因数算是比较基础的数学问题,应该有很成熟的解法。待我好好研究下别人的算法,再来做更新。
++++++++++++++++++++++++++++++++++++++
Python练习题 010:分解质因数的更多相关文章
- 初识python: 递归函数 - 分解质因数
分解质因数: 任何一个合数都可以写成几个质数相乘的形式.其中每个质数都是这个合数的因数,叫做这个合数的分解质因数.分解质因数只针对合数. 比如: 8 分解质因数是:2*2*2 10分解质因数是:2*5 ...
- python练习笔记——分解质因数
分解质因数:输入一个正整数,分解质因数:如输入: 90 则打印: 90 = 2 * 3 * 3 * 5 get_str = input("请输入一个100以内的正整数,以分解质因数:&q ...
- python基础练习题(题目 将一个整数分解质因数。例如:输入90,打印出90=2*3*3*5)
day9 --------------------------------------------------------------- 实例014:分解质因数 题目 将一个整数分解质因数.例如:输入 ...
- python分解质因数
将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. # !/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wa ...
- 【Python】【demo实验17】【练习实例】【将一个正整数分解质因数】
题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. 我的源代码: #!/usr/bin/python # encoding=utf-8 # -*- coding: UTF-8 ...
- 【python】将一个正整数分解质因数
def reduceNum(n): '''题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5''' print '{} = '.format(n), : print 'Pleas ...
- C# 练习题 将一个正整数分解质因数
题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5.程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程 ...
- JAVA 基础编程练习题4 【程序 4 分解质因数】
4 [程序 4 分解质因数] 题目:将一个正整数分解质因数.例如:输入 90,打印出 90=2*3*3*5. 程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成: (1) ...
- Python练习题2
如果真的想学精,学什么都不是好学的,如果真的想把Python学的出神入化,几乎自己想做什么都可以,就要下定恒心,坚持下去. 接下来继续更新Python练习题2,通过更新前一部的练习题让自己也学到了不少 ...
随机推荐
- Java中解析wav音频文件信息:音频声道数,采样频率,采样位数、声音尺寸
前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 音频解析方法: public static int toInt(byte[] b) { return ((b[3] << 2 ...
- mysql 8.0.19 win10快速安装教程
本文教程为大家分享了mysql 8.0.19安装教程,供大家参考,具体内容如下 1.下载.zip安装文件 2.根目录存放my.ini,文件路径用“/”分割,例如: [mysqld] port=3306 ...
- JavaScript中pipe实战
JavaScript中pipe原理 代码示例 const pipe = (...fns) => x => fns.reduce((y, f) => f(y), x); 原理 一行代码 ...
- composer(三) 基本命令
composer基本命令 composer init (-q) 利用composer创建新应用 composer init -q composer require 和 composer install ...
- 聊一聊RocketMQ的注册中心NameServer
前言 上次我们一起了解了RocketMQ的基本架构原理,那简单的回顾一下RocketMQ的架构组成. RocketMQ其实包含了四个核心部分,NameServer.Broker.Producer.Co ...
- Rakefile
Rakefile https://www.jianshu.com/p/b18a6e42455a RAKE – Ruby Make http://docs.seattlerb.org/rake/ bun ...
- Vue-router的用法与使用步骤
Vue-router的使用步骤: Vue Router的使用步骤还是比较清晰的,按照步骤一步一步就能完成路由操作 A.导入js文件 B.添加路由链接 C.添加路由占位符(最后路由展示的组件就会在占位符 ...
- 01 fs模块
1 fs.readFile 异步执行函数 /** fs 读取文件相对路径是相对终端命令行所在的路径 process.cwd()返回终端命令行的绝对路径 * */ fs = require('fs') ...
- Solon详解(三)- Solon的web开发
Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...
- origin Tips
origin Tips 注意事项 在最初画图时,需要考虑到最好将图片的尺寸限制在 1 张 A4 纸的大小,不然有可能在插入 latex 的时候出问题 . 如何修改图片的尺寸?简而言之就是将画布中的图片 ...