Python求质数/素数

先写一个装饰器d1.py,为了测试执行时间

from functools import wraps
import time


def f1(func):
    @wraps(func)
    def f2():
        begin = time.time()
        func()
        end = time.time()
        print('cost', end - begin)
    return f2

方法一

# -*- coding: UTF-8 -*-
from d1 import f1

@f1
def h():
    i = 2
    while i < 1000:
        j = 2
        while j <= i / j:   # 比方法二范围更小
            if not i % j:
                break
            j = j + 1
        if j > i / j:       # 证明上面没有break出来
            print(i, " 是素数")
        i = i + 1
    print("Good bye!")   

h()
>>>...
>>>cost 0.012665987014770508

方法二

from d1 import f1

@f1
def s():
    for num in range(2,1000):  # 迭代 10 到 1000 之间的数字
        for i in range(2,num): # 根据因子迭代
            if num % i == 0:   # 确定第一个因子
                # j = num / i    # 计算第二个因子
                # print('%d 等于 %d * %d' % (num,i,j))   # 能被分解因子,则不是质数
                break # 跳出当前循环
        else: # 循环的 else 部分
            print(num, '是一个质数')

s()

>>>...
>>>cost 0.06467127799987793

你可能感兴趣的:(算法)