#可过蓝桥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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复