今天讨论的是如何将一个正整数分解质因数。例如:输入36,打印出36=2*2*3*3。

1.首先要清晰两个概念,要知道什么是质数,如何进行分解质因数?质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。分解质因数是把一个正整数用质因数相乘的形式表示出来。

2. 逻辑分析:对一个正整数k进行分解质因数,应先找到一个最小的质数j,然后按下述步骤完成:

(1)如果这个质数j恰等于k,则说明分解质因数的过程已经结束,打印出即可。(2)如果k=j1*j2……*jn,但k能被j整除,则应打印出k得值,并用k除以j的商,作为新的正整数j, 重复执行第一步。 (3)如果k=j1*j2……*jn不能被j整除,则用j+1作为j得值,重复执行第一步。

根据以上思路程序进行开发设计,使用现在流行的Python程序为例,对“如何将一个正整数分解质因数的问题”进行学习讨论。

3.程序代码:

# -*-coding:utf-8 -*-num=int(input("请输入一个大于1的正整数字:"))

ZS_num_list=[]#创建一个空列表用作存入输入数字所在范围的所有质数

chushu_list=[]#创建除数列表

shang_list=[]#创建商列表

for i in range(2,num+1): #提取质数

j=2

for j in range(2,i):#余数为零时表示不是质数,并跳出进入上一级for循环,对下一个数字进行取余判断,

# 当余数不为零时,跳过if下的break,执行else的语句,将质数累加到ZS_num_list中

if i%j==0:

break

else:

ZS_num_list.append(i)#将质数加到列表中

#print(ZS_num_list)#测试打印质数列表

def ZYS(num):#创建质因数函数

for n in ZS_num_list: #遍历质数列表,从最小的质数开始

if num==n: #(第一步)如果数恰等于n时,将n加到商列表中

shang_list.append(n)

else:##如果数不等于n时,余数为0,则n为最小质数

if num%n==0 and num!=n:

chushu_list.append(n) #将n加到除数列表中

shang_list.append(int(num/n)) #将当前运算的商加到商列表中

return ZYS(int(num/n)) #将当前运算的商加到商加入ZYS函数中重复执行,

# 直到只能运行到第一步,

# 即商为质数时停止

ZYS(num)

#print(chushu_list)

#print(shang_list)

print("它分解质因数为:")

shang_len=len(shang_list) #商列表中的数字数量

print(num,"= ",end="") #end=""表示不换行

for chushu_len in chushu_list:

print(chushu_len,"* ",end="")

print(shang_list[shang_len-1])

程序运行结果:

请输入一个大于1的正整数字:180

它分解质因数为:

180=2*2*3*3*5

可以自己计算验证是否正确:

验证计算图

4. 程序分析:

(1)建立质数、除数及商的列表数

a.创建一个空列表用作存入输入数字所在范围的所有质数

b.创建除数列表

c.创建商列表

(2)根据输入数字建立质数范围数据,提取质数到列表中。

a.余数为零时表示不是质数,并跳出进入上一级for循环,对下一个数字进行取余判断,

b.当余数不为零时,判断是否为质数,并将质数累加到质数表中

3)使用建立的数据范围进行穷举,获取符合要求的数据

a.遍历质数列表,从最小的质数开始

如果数恰等于n时,将n加到商列表中如果数不等于n时,余数为0,则n为最小质数b.将n加到除数列表中

将当前运算的商加到商列表中将当前运算的商加到商加入ZYS函数中重复执行,直到只能运行到第一步,即商为质数时停止

最后执行程序:

相信各位对于关于将一个正整数分解质因数的逻辑思维有了更清晰的理解,根据此课题进行进一步拓展,可以使用其他方法进行设计。感谢您读完了子甲园的分享,欢迎留言一起聊聊天,共同探讨各种逻辑思维和Python开发设计。

python对整数进行因数分解_浅谈将一个正整数分解质因数的逻辑思维和Python开发设计...相关推荐

  1. python 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

    # 将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5.n = int(input('请输入需要分解的正数:')) # 创建一个列表用来存放遍历出来的因数 lt = [] # 给n换个 ...

  2. python中 是什么类型_浅谈python中的变量默认是什么类型

    浅谈python中的变量默认是什么类型 1.type(变量名),输出的结果就是变量的类型: 例如 >>> type(6) 2.在Python里面变量在声明时,不需要指定变量的类型,变 ...

  3. python出现traceback什么意思_浅谈python出错时traceback的解读

    写 Python 代码的时候,当代码中出现错误,会在输出的时候打印 Traceback  错误信息,很多初学者看到那一堆错误信息,往往都会处于懵逼状态,脑中总会冒出一句,这都是些啥玩意.如果你是第一次 ...

  4. python语法中infile语句_浅谈pymysql查询语句中带有in时传递参数的问题

    直接给出例子说明: cs = conn.cursor() img_ids = [1,2,3] sql = "select img_url from img_url_table where i ...

  5. python生成器和迭代器作用_浅谈Python中的生成器和迭代器

    迭代器 迭代器协议 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么返回一个异常来终止本次迭代.(只能往前走,不能往后退!) 迭代器对象 遵循了(实现了)迭代器协议的对象.(对象内 ...

  6. python中判断列表数据类型_浅谈Python数据类型判断及列表脚本操作

    数据类型判断 在python(版本3.0以上)使用变量,并进行值比较时.有时候会出现以下错误: TypeError: unorderable types: NoneType() < int() ...

  7. python 字典键值重复_浅谈python字典多键值及重复键值的使用

    在python中使用字典,格式如下: dict={ key1:value1 , key2;value2 ...} 在实际访问字典值时的使用格式如下: dict[key] 多键值 字典的多键值形式如下: ...

  8. python查询数据库带逗号_浅谈pymysql查询语句中带有in时传递参数的问题

    直接给出例子说明: cs = conn.cursor() img_ids = [1,2,3] sql = "select img_url from img_url_table where i ...

  9. python中怎么调用函数_浅谈Python中函数的定义及其调用方法

    一.函数的定义及其应用 所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤 1.定义函数–封装独立的功能 2.调用函数–享受封装的成果 函数的作用:在开发时 ...

最新文章

  1. hashlib模式和hmac模式
  2. Java在Quant应用_java – 如何绘制quantil band(在R中)
  3. JavaWeb-JavaMail邮件开发
  4. xarray 笔记:DataArray
  5. integer是值传递还是引用传递_值传递与引用传递
  6. Newton Method in Maching Learning
  7. [2.7]【CF933A】A Twisty Movement【CF926B】Add Points【CF917A】The Monster【CF919E】Congruence Equation
  8. 有必要考国二mysql_计算机二级必须要考吗
  9. UI实用素材案例|视觉层次感爆棚的APP设计
  10. 笔记本电脑键盘切换_有哪些好用的办公键盘
  11. 3.4 卷积的滑动窗口实现
  12. 进程间的通信方式(六种)
  13. java jpress,使用JPress快速搭建系统
  14. Python多继承mro
  15. 【二胡音乐】陈军《胡弓传奇》
  16. 中国云计算厂商TOP30重磅榜单
  17. Word UVA - 517 状态压缩 暴力搜索
  18. WORD页码相同问题
  19. cGAN/cDCGAN,MNIST数据集初体验(内含原理,代码)
  20. 如何在Powerpoint中更改幻灯片大小

热门文章

  1. 抽象数据类型的三元组C语言,试仿照三元组的抽象数据类型分别写出数据类型复数和有理数的定义?...
  2. 户外直播信号差,老出现卡顿现象怎么办?
  3. 安卓证书在线制作工具
  4. freemarker ftl模板语法和指令
  5. LintCode 两个数组的交集
  6. length和length()的区别
  7. minecraft兑换码领取!
  8. 移动硬盘I盘误删的数据恢复方法
  9. 一对一直播技术服务【推广】
  10. Xubuntu22.04装有道词典:报错has unexpected type “float“(一百四十一)