标题:把一个正整数进行因质分解
只看楼主
zxq0103
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2023-3-10
结帖率:0
已结贴  问题点数:10 回复次数:4 
把一个正整数进行因质分解
程序代码:
def fen_jie(num): #  递归法
    for i in range(2,num+1):
        if i == num:
            print(i,end="")
            return
        elif num % i == 0:
            print(i,"* ",end="")
            fen_jie(num // i)
            return

def fen_jie2(num):
    while num != 1: # 循环判断法
        for i in range(2,num + 1):
            if num % i == 0:
                print(i,end="")
                num //= i
                if num != 1:
                    print(" * ",end="")
                break

if __name__ == "__main__":
    int_a= 90
    print(int_a," = ",end="")
    fen_jie(int_a)
    print()
    print(int_a," = ",end="")
    fen_jie2(int_a)

输出结果:
90  = 2 * 3 * 3 * 5
90  = 2 * 3 * 3 * 5
搜索更多相关主题的帖子: if end print num 分解 
2023-04-01 13:22
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:5 
您有什么问题吗?

会当凌绝顶,一览众山小.
2023-04-01 14:53
ysr2857
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:767
专家分:65
注 册:2020-2-10
得分:5 
回复 楼主 zxq0103
def fen_jie(num): #  递归法
    for i in range(2,num+1):
        if i == num:
            print(i,end="")
            return
        elif num % i == 0:
            print(i,"* ",end="")
            fen_jie(num // i)
            return

def fen_jie2(num):
    while num != 1: # 循环判断法
        for i in range(2,num + 1):
            if num % i == 0:
                print(i,end="")
                num //= i
                if num != 1:
                    print(" * ",end="")
                break

if __name__ == "__main__":
    int_a= 142857
    print(int_a," = ",end="")
    fen_jie(int_a)
    print()
    print(int_a," = ",end="")
    fen_jie2(int_a)

这个程序可以运行,但要分解的数需要再程序中改顶,上面的结果如下:
...
142857  = 3 * 3 * 3 * 11 * 13 * 37
142857  = 3 * 3 * 3 * 11 * 13 * 37>>>
2023-04-01 16:47
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:0 
可以改为接收输入:
程序代码:
def fen_jie(num): #  递归法
    for i in range(2,num+1):
        if i == num:
            print(i,end="")
            return
        elif num % i == 0:
            print(i,"* ",end="")
            fen_jie(num // i)
            return

def fen_jie2(num):
    while num != 1: # 循环判断法
        for i in range(2,num + 1):
            if num % i == 0:
                print(i,end="")
                num //= i
                if num != 1:
                    print(" * ",end="")
                break

if __name__ == "__main__":
    while True:
        try:
            int_a= 90
        except:
            print('error')
            break
        print(int_a," = ",end="")
        fen_jie(int_a)
        print()
        print(int_a," = ",end="")
        fen_jie2(int_a)
        

会当凌绝顶,一览众山小.
2023-04-01 19:01
zxq0103
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2023-3-10
得分:0 
回复 2楼 东海ECS
没什么问题,就是我新手,自己写的代码,让大神们给看一下,有没有需要改的地方
谢谢上面几位的指点

[此贴子已经被作者于2023-4-1 22:57编辑过]

2023-04-01 22:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511765-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058634 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved