day04
拆分因数问题
将一个正整数分解质因数。例如:输入 90,打印出 90=233*5
分析
对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述
步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打
印出即可。 (2)如果 n>k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k
的商 ,作为新的正整数你 n,重复执行第一步。 (3)如果 n 不能被 k 整除,则用 k+
1 作为 k 的值 ,重复执行第一步。
编码实现
1.编码实现(循环)
n=90
r=""
i=2
while 1:
if n%i==0 and i<n:
r=r+"*"+str(i)
n=n//i
i=1
elif i==n:
r = r + "*" + str(i)
break
i=i+1
r=r[1:]
print(r)
结果
2*3*3*5
2.编码实现(函数)
#定义素数判断函数,参数为n
def IsPrime(n):
for i in range(2,n):
if n%i==0:
return False
return True
n=10615
r=""
i=2
while 1:
if IsPrime(i):
if n%i==0 and i<n:
r = r + "*" + str(i)
n = n // i
i=1
elif i==n:
r = r + "*" + str(i)
break
i=i+1
r=r[1:]
print(r)
结果
5*11*193