将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Hiuhung Wan
num = input("请输入一个合数:")
if num.isdigit():
num = int(num)
else:
print("输入非法,请输入一个合数")
exit()
if num < 2:
print("请输入一个大于2的合数")
exit()
def isZhishu(num): # 判断是否是质数
for i in range(2, num):
if num % i == 0: # 不是质数
return False
else:
return True
l0 = []
def fenjie(num):
i = 2
while i < num + 1:
if num % i == 0:
l0.append(i)
num /= i
else:
i += 1
if not isZhishu(num):
fenjie(num)
str0 = ''
for i in l0:
str0 = str0 + str(i) + "*"
str0 = str0[:-1] # 去掉最后一个星号
print("%s=%s" % (num, str0))
else:
print("%s是一个质数,请输入一个合数" %num)
判断是否质数的方法,可以优化一下
from math import sqrt
def is_prime(n):
if n == 1:
return False
for i in range(2, int(sqrt(n))+1):
if n % i == 0:
return False
return True