紹介マニアMoinMoin

Pythonでいくつかアルゴリズムを記述してみる。

総和

総和は非常に基本的なアルゴリズムです。ここでは1から10までの総和を計算するアルゴリズムを示してみます。

   1 for i in range(1,11):
   2    summation += i

これは単純すぎます。通常は以下になります。

   1 n = 10
   2 summation = n * (n + 1) / 2

built-in function の sumを利用する手もあります。

   1 summation = sum(range(1, 11))

初期値からの連続する値であれば、2番目の方法がもとも速度的には早いです。また rangeはあまりおおきな値をあつかえませんし、xrangeには python-Bugs-1003935(python2.4では修正済み)がありますので巨大数では2番目の方法以外は選択できません。

総和の計算 (物理のかぎしっぽ)

再帰

再帰は通常メモリを多量に消費しますが、アルゴリズムの表現には非常に便利です。

素数判定

   1 def subprime(n, m):
   2     if ((m * m) > n):
   3         return True
   4     elif ((n % m) == 0):
   5         return False
   6     else:
   7         return subprime(n, (m + 1))
   8 
   9 def prime(x):
  10     if ((type(x) == int) and (abs(x) > 1)):
  11         return subprime((abs(x)), 2)
  12     else:
  13         return False

   1 for i in range(0, 100):
   2     if (prime(i) == True):
   3         print i

などとすれば素数が表示されます。

参考サイト


アルゴリズム CategoryPrograming CategoryPython

紹介マニアMoinMoin: Pythonによるアルゴリズム入門 (last edited 2010-07-05 02:01:26 by sakito)