アルゴリズム?プログラミング。 - 計算?アルゴリズム?
計算してみましょう。手順を考えながらコードを書いていきます。
合計
欲しいのは合計なのでそれが入る変数を作ります。
sum = 0
合計というのは数字を連続的に足していくのでForループが使えそうです。
for i in range(3):
sum = sum + i
range(3)で0から2までの範囲を指定しています。"i"は順番に"0,1,2"数字が入っていきます。
合計の入る"sum"に次々に足し込んでやるのが
あとは"print"で出力すれば合計がでます。
全体です。
sum = 0
for i in range(3):
sum += i
print(sum)
手順を追って計算します。この順序、計算方法についての手順がアルゴリズムと呼ばれます。
次にrange()ではなく、リストを利用して計算してみます。リストを指定するとリストに入っている数字が順次"i"に入っていきます。
arrList = [5,2,7,1,2]
sum2 = 0
for i in arrList:
sum2 += i
print(sum2)
と計算できます。
平均
全ての合計をその数で割れば良いので、
arrList = [5,2,7,1,2]
sum2 = 0
for i in arrList:
sum2 += i
print(sum2 / len(arrList))
これを実行すると"3.4"とでてきます。平均は3.4ということです。
もう少し複雑な計算を
素数の判定
まずは素数とは、
対象の数字を1以外の他の数字で割ることができない数字ということで例えば
というような数字が素数となります。この素数をPythonで判定ですが、
試し割り法で実装します。
num =77
for i in range(2,num):
if num % i == 0:
print("違う")
break
else:
print("素数")
変数numに調べたい数字を入れて実行すると判定します。これを関数にすると
def prime(num):
for i in range(2,num):
if num % i == 0:
print("違う")
break
else:
print("素数")
となり調べたい数字を
というふうに入れてやると簡単スッキリ計算してくれます・
ここでこれを効率化します。考え方で余分な計算をさせないようにして計算時間を短くします。
理屈は、素数を判定する時に全ての数字を今の式では調べていますが、実は半分試せば結果は同じになるということがわかっています。これを利用してfor in 文を
for i in range(2,int(num/2)):
とします。これで同じ効果が期待できます。
効率化こそアルゴリズムということです。短時間に計算させることができます。
おまけ