鱼C论坛

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

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

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

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

max_one = max(a_list)
min_one = min(a_list)

if num == max(a_list):
    print(num)
else:
    while num >= min_one:
        for g in a_list:
            if num % g == 0:
                print(g,end = "")
                break
        num = num / g
        if num != 1:
            print("*",end = "")    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 23:45:46 | 显示全部楼层
n = int(input('输入一个正整数:'))
print('%d=' % n, end='')
k = 2
list = []
while True:
    if k == n:
        list.append(str(n))
        break
    if n > k:
        if n % k == 0:
            list.append(str(k))
            n = n // k
        else:
            k = k + 1
print('*'.join(list))
想知道小甲鱼最近在做啥?请访问 -> 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]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

for i in range(2, n):
    for j in range(2, int(m.sqrt(i))+1):
        if i%j == 0:
            list2.append(i)
for each in list1:
    if each not in list2:
        prime_num.append(each)

# 判断
length = int(len(prime_num))
point = 0
print('%d='%n, end='')
while True:
    if point:
        break
    for i in range(0, length):
        if n % prime_num[i] == 0:
            print('%d'%prime_num[i], end='')
            if n == prime_num[i]:
                point = 1
                break
            print('*',end='')
            n //= prime_num[i]
            break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-18 14:10:09 | 显示全部楼层
num = int(input())
lst = []
def zys(num):
    if num !=1:
        for i in range(2,num+1):
            if num %i ==0:
                lst.append(i)
                num=num//i
                break
        zys(num)
zys(num)
print(lst)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 23:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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