华为机试题库_在线编程+题解_牛客题霸_牛客网

话题

描述

功能:输入一个正整数牛客网编程题输入输出,按升序输出其所有素因数(重复的也会列出)(例如180的素因数是2 2 3 3 5 )

最后一个数字后也应该有一个空格

输入说明:

输入一个长整数

输出说明:

按升序打印其所有素数的因数,以空格分隔。最后一个数字之后也应该有一个空格。

示例 1

进入:

180

图片[1]-华为机试题库_在线编程+题解_牛客题霸_牛客网-老王博客

输出:

2 2 3 3 5

解决问题的想法

前言:如果一个数不是素数,那么它必须表示为两个数的乘积(除了1和它自己),并且这两个数的平方根必须小于或等于它。

思路:while循环,按照前言,只需要循环到根数num,当它可以整除时牛客网编程题输入输出,输出素数i,并更新num值,重置i=1,

>>>num = 10
>>>num%2
0
>>>num%3
1

代码

while True:
    try:
        num = int(input())
        i = 1
        while num > i*i:
            i = i + 1
            if num%i==0:
                num = int(num/i)
                print(i, end=" ")
                i = 1
        print(num, end=" ")
    except:
        break

参考

华为电脑试题库

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论