鱼C论坛

 找回密码
 立即注册
查看: 381|回复: 6

[已解决]分解质因数一道题求解

[复制链接]
发表于 2020-4-12 17:08:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
SOS
最佳答案
2020-4-12 17:17:02
这些题我昨天刚解决
import math
def is_prime(number):
    if number > 1:
        if number == 2:
            return True
        if number % 2 == 0:
            return False
        for each in range(3,int(math.sqrt(number) + 1),2):
            if number % each == 0:
                return False
        return True
    return False
def get_primes(number):
    while True:
        if is_prime(number):
            yield number
        number += 1
def solve(count):
    clist = [2]
    for next_prime in get_primes(3):
        if next_prime < count:
            clist.append(next_prime)
        else:
            return clist
            break
def mincommul(num,nlist):
    for i in nlist:
        if not num % i:
            return [i,num // i]
def main():
    try:
        count = int(input('count = '))
        clist1 = solve(count)
        clist2 = []
        while True:
            clist2.append(mincommul(count,clist1)[0])
            count = mincommul(count,clist1)[1]
            if count == 1:
                break
        print(clist2)
    except Exception as error:
        print('An error has occurred:' + str(error))
if __name__ == '__main__':
    main()
QQ图片20200412170840.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-12 17:17:02 | 显示全部楼层    本楼为最佳答案   
这些题我昨天刚解决
import math
def is_prime(number):
    if number > 1:
        if number == 2:
            return True
        if number % 2 == 0:
            return False
        for each in range(3,int(math.sqrt(number) + 1),2):
            if number % each == 0:
                return False
        return True
    return False
def get_primes(number):
    while True:
        if is_prime(number):
            yield number
        number += 1
def solve(count):
    clist = [2]
    for next_prime in get_primes(3):
        if next_prime < count:
            clist.append(next_prime)
        else:
            return clist
            break
def mincommul(num,nlist):
    for i in nlist:
        if not num % i:
            return [i,num // i]
def main():
    try:
        count = int(input('count = '))
        clist1 = solve(count)
        clist2 = []
        while True:
            clist2.append(mincommul(count,clist1)[0])
            count = mincommul(count,clist1)[1]
            if count == 1:
                break
        print(clist2)
    except Exception as error:
        print('An error has occurred:' + str(error))
if __name__ == '__main__':
    main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-12 17:20:14 | 显示全部楼层
关键是要看懂我的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-12 17:27:42 | 显示全部楼层
wuqramy 发表于 2020-4-12 17:20
关键是要看懂我的代码

看不懂讲解下大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-12 17:41:22 | 显示全部楼层
def f(n: int, /) -> list:
    res=[]

    while not n&1:
        n>>=1
        res.append(2)
    
    temp=3
    maximum=int(n**0.5)

    while temp<=maximum:
        if not n%temp:
            while not n%temp:
                n//=temp
                res.append(temp)

            maximum=int(n**0.5)

        temp+=2

    if n!=1:
        res.append(n)

    return res

print(f(int(input())))
我能说一句吗,你好菜啊
不光菜,更是连思考都不思考,上来就问。
这样能学好吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-12 17:42:59 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-12 17:41
我能说一句吗,你好菜啊
不光菜,更是连思考都不思考,上来就问。
这样能学好吗?

我错了 我已经写过了然后才问你们看看有别的方法吗!!1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-12 17:59:58 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-12 17:41
我能说一句吗,你好菜啊
不光菜,更是连思考都不思考,上来就问。
这样能学好吗?


可能他没学过分解质因数
(满满的不服)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 08:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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