見出し画像

アルゴリズム?プログラミング。 - 計算?アルゴリズム?

計算してみましょう。手順を考えながらコードを書いていきます。

合計

欲しいのは合計なのでそれが入る変数を作ります。

sum = 0

合計というのは数字を連続的に足していくのでForループが使えそうです。

for i in range(3):
    sum = sum + i

range(3)で0から2までの範囲を指定しています。"i"は順番に"0,1,2"数字が入っていきます。

合計の入る"sum"に次々に足し込んでやるのが

sum = sum + i   ・・・ sum += 1  と書くことができます。

あとは"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))

len(arrList)とすると、arrListの長さがわかります。

これを実行すると"3.4"とでてきます。平均は3.4ということです。

もう少し複雑な計算を

素数の判定

まずは素数とは、

素数(そすう、: prime number)とは、2 以上の自然数で、正の約数1 と自分自身のみであるもののことである。正の約数の個数が 2 である自然数と言い換えることもできる。

https://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0

対象の数字を1以外の他の数字で割ることができない数字ということで例えば

2、3、5、7、11

というような数字が素数となります。この素数を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("素数")    

となり調べたい数字を

prime(7)

というふうに入れてやると簡単スッキリ計算してくれます・

ここでこれを効率化します。考え方で余分な計算をさせないようにして計算時間を短くします。

理屈は、素数を判定する時に全ての数字を今の式では調べていますが、実は半分試せば結果は同じになるということがわかっています。これを利用してfor in 文を

 for i in range(2,int(num/2)):

とします。これで同じ効果が期待できます。

効率化こそアルゴリズムということです。短時間に計算させることができます。

おまけ


この記事が気に入ったらサポートをしてみませんか?