找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3813|回复: 1

[求助] python_3.6.3 整数的因子分解分解问题

2

主题

5

帖子

5

积分

贫民

积分
5
送成一团的毛球 发表于 2017-11-23 18:37:53 | 显示全部楼层 |阅读模式
问题描述:输入一个数字,如果是素数就显示这是一个素数,如果不是就将它因式分解。

我写的代码如下:
#-*-coding:cp936-*-
while True:
        n = input("请你输入一个数字,程序将会为你返回若干个素数的乘积的形式: ")
        if n == 'q':
                break
        factor = 2
        if n != 'q':
                n = int(n)
                while factor * factor <= n:
                        while n % factor == 0:
                                n //= factor
                                print(str(factor) + ' ')
                        factor += 1
                if n > 1 :
                        print(str(n))


疑问:我想要表示成 如同 2*3*5*7这种形式,但是这一种就是每一个因式分解就占据一个答案。

我的尝试:
#-*-coding:cp936-*-
a = []
while True:
        n = input("请你输入一个数字,程序将会为你返回若干个素数的乘积的形式: ")
        if n == 'q':
                break
        factor = 2
        if n != 'q':
                n = int(n)
                while factor * factor <= n:
                        while n % factor == 0:
                                n //= factor
                                a.append(factor)
                        factor += 1
                if n > 1 :
                        a.append(n)
       
for number in a:
        print(number + '*')


问题: 我建立了一个列表,将得到的结果加入到了列表里面,但是输出的时候,就得不到结果,所以有点不知道该怎么办。
我希望能得到的结果是比如我输入了 27 ,那么结果就是 3*3*3*的样式,但是最后虽然语法上没有问题,但是并不能显示结果,而是一直在重复 请你输入一个数字,程序将会为你返回若干个素数的乘积的形式:

希望能有老司机帮忙看一看,可能是我修改之后没有定义循环终止的条件,但是最开始的代码能完成任务啊。
回复

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-11-24 08:38:24 | 显示全部楼层
while True:
        a = []
        n = input("请你输入一个数字,程序将会为你返回若干个素数的乘积的形式: ")
        if n == 'q':
                break
        factor = 2
        if n != 'q':
                n = int(n)
                while factor * factor <= n:
                        while n % factor == 0:
                                n //= factor
                                a.append(str(factor))
                        factor += 1
                if n > 1 :
                        a.append(str(n))
        print('*'.join(a))
回复 支持 反对

使用道具 举报

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

本版积分规则

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