zoukankan      html  css  js  c++  java
  • python基础练习题(题目 将一个整数分解质因数。例如:输入90,打印出90=2*3*3*5)

    day9

    ---------------------------------------------------------------

    实例014:分解质因数

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

     分析:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数,算法思路网上找的,代码是自己敲的

     1 import math
     2 # 先判断数num是否为合数,如果是,选择最小的质数k=2,进行分解质因数的过程:
     3 # (1)如果k小等于num,程序继续执行;
     4 # (2)如果num能被k整除,说明k是num的一个因数,并用num除以k的商作为新的正整数num,重复执行第一步;否则用k+1作为k的值,重复执行第一步
     5 
     6 # a = int(input("请输入除1外的一个正整数:"))
     7 for a in range(2,100):
     8     if a >1:
     9         for i in range(2,int(math.sqrt(a))+1):
    10             if a%i ==0:
    11                 print(f"{a}是合数,有分解质因数",end="")
    12                 k = 2
    13                 a1= a
    14                 list = []
    15                 while k <= a1:
    16                     if a1==k and k!=2:
    17                         list.append(k)
    18                         break
    19                     elif a1%k ==0:
    20                         a1= a1/k
    21                         list.append(k)
    22                         continue
    23                     else:
    24                         k+=1
    25                 print("数为", list)
    26                 break
    27             else:
    28                 continue
    29         else:
    30             print(f"{a}是质数,没有分解质因数")

    看标准答案:根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质数。是对的,哈哈哈哈,我做复杂了,从14行看,比我少了一个循环

     1 target=int(input('输入一个整数:'))
     2 print(target,'= ',end='')
     3 
     4 if target<0:
     5     target=abs(target)
     6     print('-1*',end='')
     7 
     8 flag=0
     9 if target<=1:
    10     print(target)
    11     flag=1
    12 
    13 
    14 while True:
    15     if flag:
    16         break
    17     for i in range(2,int(target+1)):
    18         if target%i==0:
    19             print("%d"%i,end='')
    20             if target==i:
    21                 flag=1
    22                 break
    23             print('*',end='')
    24             target/=i
    25             break
  • 相关阅读:
    【288】◀▶ 博客园黑色代码主题实现
    【287】◀▶ arcpy 常用类说明
    【286】◀▶ Python 内置函数说明
    LeetCode Insert Interval
    Craking the coding interview 面试题:完美随机洗牌
    遭遇多线程bug (1)
    全情投入是做好工作的基础——Leo鉴书39
    《Java 并发编程实战》读书笔记之二:图文讲述同步的另一个重要功能:内存可见性
    视图控制器
    Chapter 1. OpenGL基础回顾
  • 原文地址:https://www.cnblogs.com/qgc1995/p/14839481.html
Copyright © 2011-2022 走看看