鱼C论坛

 找回密码
 立即注册
楼主: 新手·ing

[技术交流] Python:每日一题 9

[复制链接]
发表于 2020-5-10 19:09:23 | 显示全部楼层
  1. num =  int(input("请输入一个正整数:"))
  2. a_list = list(range(2,num + 1))#使用range()创建数字列表
  3. for i in range(2,num + 1):
  4.     for j in range(2,i):
  5.         if i % j == 0:
  6.             a_list.remove(i)#remove() 函数用于移除列表中某个值的第一个匹配项
  7.             break#break 语句可以跳出 for 和 while 的循环体

  8. print("正整数分解质因数:%d="%num , end = "")

  9. max_one = max(a_list)
  10. min_one = min(a_list)

  11. if num == max(a_list):
  12.     print(num)
  13. else:
  14.     while num >= min_one:
  15.         for g in a_list:
  16.             if num % g == 0:
  17.                 print(g,end = "")
  18.                 break
  19.         num = num / g
  20.         if num != 1:
  21.             print("*",end = "")   
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 23:45:46 | 显示全部楼层
  1. n = int(input('输入一个正整数:'))
  2. print('%d=' % n, end='')
  3. k = 2
  4. list = []
  5. while True:
  6.     if k == n:
  7.         list.append(str(n))
  8.         break
  9.     if n > k:
  10.         if n % k == 0:
  11.             list.append(str(k))
  12.             n = n // k
  13.         else:
  14.             k = k + 1
  15. print('*'.join(list))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-30 15:21:05 | 显示全部楼层
#将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

#定义一个方法判断这个数是否是素数
def isPrime(num):
    flag = 0
    if(num == 2):
        return True
    else:
        for i in range(2 , num // 2 +1):
            if num % i == 0:
                flag = 1
                break
        if flag == 0:
            return True
        else:
            return False


#定义num 用于接收输入的数字
#定义result 用于接收分解的质因子

num = int(input("请输入一个数字:"))
result = []
#首先判断是否是质因子,如果是直接输出结果
if isPrime(num):
    result = [1,num]
else:
    for i in range(2,num // 2+1):
        #只对质数求余数
        if isPrime(i):
            #对同一个质数反复求余,直到商对于此质数不能整除(会将每轮求余数的商赋值给num)
            while (num % i == 0):
                num = num // i
                result.append(i)
                if isPrime(num):
                    result.append(num)
                    break
print(result)



请输入一个数字:1800
[2, 2, 2, 3, 3, 5, 5]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-29 17:41:43 | 显示全部楼层
借鉴了一些别人的想法
  1. import math as m

  2. n = int(input('请输入一个正整数:'))

  3. # 生成比n小的素数列表
  4. list1 = []
  5. list2 = []
  6. prime_num = []
  7. for each in range(2, n):
  8.     list1.append(each)

  9. for i in range(2, n):
  10.     for j in range(2, int(m.sqrt(i))+1):
  11.         if i%j == 0:
  12.             list2.append(i)
  13. for each in list1:
  14.     if each not in list2:
  15.         prime_num.append(each)

  16. # 判断
  17. length = int(len(prime_num))
  18. point = 0
  19. print('%d='%n, end='')
  20. while True:
  21.     if point:
  22.         break
  23.     for i in range(0, length):
  24.         if n % prime_num[i] == 0:
  25.             print('%d'%prime_num[i], end='')
  26.             if n == prime_num[i]:
  27.                 point = 1
  28.                 break
  29.             print('*',end='')
  30.             n //= prime_num[i]
  31.             break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-18 14:10:09 | 显示全部楼层
  1. num = int(input())
  2. lst = []
  3. def zys(num):
  4.     if num !=1:
  5.         for i in range(2,num+1):
  6.             if num %i ==0:
  7.                 lst.append(i)
  8.                 num=num//i
  9.                 break
  10.         zys(num)
  11. zys(num)
  12. print(lst)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-30 03:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表