在Python中做出分解质因数

众所周知,任何合数(既非质数的自然数)都可以被分解为多个质数的乘积。

例: 

所以我们要先找出所有质数

最终代码在最下面。

先导入模块:

import easygui

设置整除函数:

def z (x, y):
    if(x % y == 0):
        return True
    else:
        return False

开始主函数:

寻找质数:

初始化变量:(list指所有质数的列表)

list = [2]
ant = False

从3开始到99999实验所有单数是不是质数:

for x in range(3, 99999, 2):
    ant = False
    for y in range(0, len(list), 1):
        if(z(x, list[y])):
            ant = False
            break
        else:
            ant = True
    if(ant):
        list.append(x)
    print("\r{}".format(repr(x / 1000) + "%"),end="")

分解部分:

print("\r{}".format("加载成功!"),end="")
while True:
    list1 = []
    num = easygui.enterbox("请输入一个自然数:","分解质因数")
    ant = 0
    while num != 1:                                              #从这里开始分解,前面的都是UI部分。
        for i in range(0,len(list),1):
            a = list[i]
            if z(int(num),int(a)):
                ant = a
        list1.append(ant)
        num = int(num) / int(ant)                                #从这里结束分解,后面的都是UI部分。
    easygui.msgbox(list1,"结果", "我知道了")
    if not(easygui.ynbox("是否继续?",["Yes", "No"])):
        break

完整代码部分:

import easygui


def z (x, y):
    if(x % y == 0):
        return True
    else:
        return False


list = [2]
ant = False
for x in range(3, 99999, 2):
    ant = False
    for y in range(0, len(list), 1):
        if(z(x, list[y])):
            ant = False
            break
        else:
            ant = True
    if(ant):
        list.append(x)
    print("\r{}".format(repr(x / 1000) + "%"),end="")
print(list)
print("\r{}".format("加载成功!"),end="")
while True:
    list1 = []
    num = easygui.enterbox("请输入一个自然数:","分解质因数")
    ant = 0
    while num != 1:
        for i in range(0,len(list),1):
            a = list[i]
            if z(int(num),int(a)):
                ant = a
        list1.append(ant)
        num = int(num) / int(ant)
    easygui.msgbox(list1,"结果", "我知道了")
    if not(easygui.ynbox("是否继续?",["Yes", "No"])):
        break

你可能感兴趣的:(python)