2013年5月23日木曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7)のIV部(関数)のまとめ演習8.(素数)を解いてみる。

その他参考書籍

8.(素数)

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

def isPrime_while(y):
    x = y // 2
    while x > 1:
        if y % x == 0:
            print("{0} has factor {1}".format(y, x))
            break
        x -= 1
    else:
        print("{0} is prime".format(y))
            
# for loop(とrange)を使った方がwhile loopより速い      
def isPrime_for(n):
    for x in range(int(n // 2), 1, -1):
        if n % x == 0:
            print("{0} has factor {1}".format(n, x))
            break
    else:
        print("{0} is prime".format(n))

for n in [13, 13.0, 15, 15.0]:
    isPrime_while(n)

import time

n = 11111111
for func in [isPrime_while, isPrime_for]:
    start = time.time()
    func(n)
    print("{0}: {1}秒".format(func.__name__, time.time() - start))

入出力結果(Terminal)

$ ./sample.py
13 is prime
13.0 is prime
15 has factor 5
15.0 has factor 5.0
11111111 has factor 1010101
isPrime_while: 1.4564869403839111秒
11111111 has factor 1010101
isPrime_for: 1.0004630088806152秒
$

0 コメント:

コメントを投稿