#可过蓝桥oj

'''zgn946

0:17 2022/5/9'''


def is_prime(num):  #素数判断

    if num==2 or num==3:

        return True

    if num%6!=1 and num%6!=5:

        return False

    for i in range(5,int(num**0.5)+1,6):

        if num%i==0 or num%(i+2)==0:

            return False

    return True 


#合数分解

def a(num, list):

    

    for i in list:

        if num % i == 0:

            return i


#

def fenjie(num):

    global ct

    global ls

    if is_prime(num):  #是素数直接返回

        ct+=1

        aa.append(num)

        return str(num)

        

    

    else: #不是素数,进行下一步

        yinzi = a(num, ls)

        ct+=1

        aa.append(yinzi)

        return    str(yinzi) + ' ' + fenjie(num // yinzi)



#

#所给区间的素数都放进一个列表

ls= []

aa=[]

n =eval(input().strip())


for j in range(2, n + 1):

    if is_prime(j):

        ls.append(j)


ct=0

fenjie(n)

#print(str(n) + '=' + fenjie(n))

for i in aa:

    print(i,end=' ')

print()

print(ct)


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论