题解 | 质数因子
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
#一直超时,因为我判断了质数,然后才用这个质数分解。根据质数分解定理,是不用判断的,如果一个数不是质数,在从2加到这个数的过程中,已经被分解掉了。
#在一个就是要有sqrt(),不然还是会超时。
from math import sqrt
'''import sys
for line in sys.stdin:
a = line.split()[0]
a=int(a)
while(a!=1):
for i in range(2,a+1):
flag_1=0
for j in range(2,i+1):
#print(j)
if(i%j==0):
if (j!=i):
#print(i,j)
flag_1=1
#print(i,flag_1)
if (flag_1==0):
if(a%i==0):
a=a/i
a=int(a)
else:
continue
print(i,end=' ')
break'''
'''import sys
for line in sys.stdin:
a = line.split()[0]
a=int(a)
b=a
i=2
while(True):
#print('a=',a)
flag_1=0
if (i>3):
for j in range(2,int(sqrt(i+1))):
#print(j)
if(i%j==0):
flag_1=1
#print(i,flag_1)
if (flag_1==0):
while(b%i==0):
b=b//i
print(i,end=' ')
i=i+1
if(b==1):
break'''
import sys
for line in sys.stdin:
a = line.split()[0]
a=int(a)
b=a
i=2
while(i<sqrt(b)+1):
while(b%i==0):
b=b//i
print(i,end=' ')
i=i+1
if(b!=1):
print(b,end=' ')
'''import sys
from math import sqrt
for line in sys.stdin:
a = int(line.strip())
b = a
i = 2
while i * i <= b: # ✅ 只试到 sqrt(b)
while b % i == 0:
b = b // i
print(i, end=' ')
i += 1
if b > 1:
# ✅ 剩下的 b 一定是一个 > sqrt 原始 a 的质数
print(b, end=' ')'''
查看24道真题和解析