| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1904 人关注过本帖
标题:把一个正整数进行因质分解
只看楼主 加入收藏
zxq0103
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2023-3-10
收藏
已结贴  问题点数:10 回复次数:8 
把一个正整数进行因质分解
程序代码:
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
等 级:版主
威 望:32
帖 子:412
专家分:1646
注 册:2023-1-24
收藏
得分:5 
您有什么问题吗?

会当凌绝顶,一览众山小.
2023-04-01 14:53
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:921
专家分:77
注 册: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
等 级:版主
威 望:32
帖 子:412
专家分:1646
注 册: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
等 级:新手上路
帖 子:37
专家分:0
注 册:2023-3-10
收藏
得分:0 
回复 2楼 东海ECS
没什么问题,就是我新手,自己写的代码,让大神们给看一下,有没有需要改的地方
谢谢上面几位的指点

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

2023-04-01 22:54
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:921
专家分:77
注 册:2020-2-10
收藏
得分: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)

这个咋不运行啊?
2026-04-11 08:47
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:921
专家分:77
注 册:2020-2-10
收藏
得分: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= 142857
        except:
            print('error')
            break
        print(int_a," = ",end="")
        fen_jie(int_a)
        print()
        print(int_a," = ",end="")
        fen_jie2(int_a)
2026-04-11 08:59
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:921
专家分:77
注 册:2020-2-10
收藏
得分: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__":
    int_a= 142857
    print(int_a," = ",end="")
    fen_jie(int_a)
    print()
    print(int_a," = ",end="")
    fen_jie2(int_a)
2026-04-11 09:02
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:921
专家分:77
注 册:2020-2-10
收藏
得分:0 
def nxyz(fi):  # 整数的因式分解公式,
    xd = list()  # 因子存于此处
    if fi <= 3:
        xd.append(fi)
    if fi >= 4:
        x = 2
        while fi >= x ** 2:
            if fi % x != 0:
                x += 1
            if fi % x == 0:
                xd.append(str(x))
                fi = int(fi / x)
        xd.append(str(fi))
    if len(xd) == 1 and fi != 1:
        ff = "这是质数,不能分解"
        print(ff)
    if fi == 1:
        print("1,不能分解的,嘿嘿!")
    if len(xd) > 1:
        ff = "*".join(xd)
        print(ff)

if __name__ == "__main__":
    fi = eval(input("请输入一个整数:\n"))
    nxyz(fi)
2026-04-11 10:15
快速回复:把一个正整数进行因质分解
数据加载中...
 
   
关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

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