练习十四:分解质因数

分解质因数:把一个合数分解成若干个质因数的乘积形式,即求质因数的过程叫做分解质因数。

要求:将一个正整数分解质因数;例如:输入的数为90,分解为90=2*3*3*5

分析:

1、该数必须不是质数(不能被1和它本身除)

2、如果遇到n能被k整除的情况,则打印出k,同时用n除以k的商,作为新的正整数n,再重复第一步操作

3、如果n不能被k整除时,那么用k+1作为k的值,再来执行第一步操作

方法一:比较笨但是可以实现

  1 a = int(input("请输入一个数字:"))
  2 list1 = []
  3 for j in range(a):
  4     for i in range(2,j):  #除过1和它本身
  5         if a % i == 0:
  6             list1.append(i)
  7             a = a//i   #重新赋值给a
  8 str1 = "".join(‘%s‘ %i for i in list1) #列表转换为str
  9 print(‘输入的数字可被分解为:‘,‘*‘.join(str1))

执行结果:

请输入一个数字:90
输入的数字可被分解为: 2*3*3*5

方法二:

  1 n=int(input("请输入一个数字:"))
  2 print(‘输入的数字可被分解为:‘,end=‘‘)
  3 for i in range(2,n//2+1):
  4     if n%i==0:
  5         print(i,end =‘*‘)
  6         n = n//i
  7 print(n)

执行结果:

请输入一个数字:90
输入的数字可被分解为:2*3*5*3

方法三:使用递归函数

  1 def f(n):
  2     n=int(n)
  3     for i in range(2,int(n/2)+1):
  4         if n%i==0:
  5              print(i,end =‘*‘)
  6              return f(n/i)
  7      print(n)
  8
  9  if __name__=="__main__":
 10      f(90)

执行结果:

2*3*3*5

原文地址:https://www.cnblogs.com/pinpin/p/9958386.html

时间: 2024-10-04 03:09:17

练习十四:分解质因数的相关文章

Java练习(四)--分解质因数

题目:将一个正整数分解质因数.例如:输入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的值,重复执行第一步. public class Test1 { public void zhi(int n) { Sy

java求最大公约数(分解质因数)

下面是四种用java语言编程实现的求最大公约数的方法: package gcd; import java.util.ArrayList; import java.util.List; public class gcd { public static void main(String[] args) { long startTime; long endTime; long durationTime; int[] testArray1 = new int[]{784, 988, 460, 732,

《视觉slam十四讲》之第3讲-实践Eigen库

<视觉slam十四讲>之第3讲-实践Eigen库 Eigen库的安装 sudo apt-get install libeigen3-dev 注:Eigen是一个由纯头文件搭建的线性代数库,头文件安装路径为/usr/include/eigen3/. 实例1:Eigen的基础运算 #include <iostream> #include <ctime> #include <Eigen/Core> // Eigen 部分 #include <Eigen/De

HDU-3240(卡特兰数+分解质因数后求逆元)

卡特兰数相关公式 : \(H_n = {C_{2n}^n \over n+1)}\) \(H_n = {(4n-2)\over n+1}\times H_{n-1}\) \(H_n = C_{2n}^n - C_{2n}^{n-1}\) $ H_n = \begin{cases} \sum_{i=1}^{n} H_{i-1} H_{n-i} & n \geq 2, n \in \mathbf{N_{+}}\ 1 & n = 0, 1 \end{cases} $ 因为 \(n\le 1000

【WPF学习】第四十四章 图画

原文:[WPF学习]第四十四章 图画 通过上一章的学习,Geometry抽象类表示形状或路径.Drawing抽象类扮演了互补的角色,它表示2D图画(Drawing)--换句话说,它包含了显示矢量图像或位图需要的所有信息. 尽管有几类画图类,但只有GeometryDrawing类能使用已经学习过的几何图形.它增加了决定如何绘制图形的画笔和填充细节.可将GeometryDrawing对象视为矢量插图中的形状.例如,可将标准的窗口元文件格式(.wmf)转换成准备插入用户界面的GeometryDrawi

Java进阶(三十四)Integer与int的种种比较你知道多少?

Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值为0,Ingeter的初值为null.但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱.所以我对它们进行了总结,希望对大家有帮助. 首先看代码: package

centos LNMP第二部分nginx、php配置 第二十四节课

centos  LNMP第二部分nginx.php配置  第二十四节课 上半节课 下半节课 f

从零开始学android&lt;android事件的处理方式.二十四.&gt;

在android中一共有 多种事件,每种事件都有自己相对应的处理机制 如以下几种 1 单击事件 View.OnClickListener public abstract void onClick (View v) 单击组件时触发 2 单击事件 View.OnLongClickListener public abstract boolean onLongClick (View v) 长按组件时触发 3 键盘事件 View.OnKeyListener public abstract boolean

苹果新的编程语言 Swift 语言进阶(十四)--扩展

Swift语言的扩展是为一个已经存在的类.结构.枚举类型添加新功能的一种方式,包括为不能存取源代码的那些已经存在的类型添加功能.        扩展类似于Objective-C语言中的类别,与类别不同的是Swift语言的扩展没有名字.        扩展能够为已存在类型:     1)增加计算属性和计算静态属性:     2)定义新的实例方法和类型方法:     3)提... 请转移到此位置继续阅读,谢谢! 苹果新的编程语言 Swift 语言进阶(十四)--扩展 苹果新的编程语言 Swift 语