將一個正整數分解質因數。例如:輸入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
