My Notes

統計学とかR(R言語)とかPython3の覚え書きとか走り書きとか。 座右の銘にしたい: All work and no play makes Jack a dull boy.

Python3(リスト内包表記、for文、lambda式) 公倍数を求める。算数の奥深さ。

コードを書く際の縛り

可能な限りビルトイン関数は使用しない。

Sympy等の数学ライブラリは使用しない。

アルゴリズムの理解のため、愚直に書く。

Python3コード

#!/usr/bin/env python3


"""(docstring)
"""


# アルゴリズムの説明
#
# 倍数のアルゴリズム
# 4の倍数なら4で割り切れる。
# 8の倍数でも同じ。
#
# 公倍数のアルゴリズム
# 4かつ8で割り切れる数。
# それが共通する倍数で、つまり公倍数。


def main():
    """(docstring)
    """

    print('リスト内包表記の場合')
    res1 = [i for i in range(1, 100+1) if i%4 == 0 and i%8 == 0]
    print(res1)

    print('for文の場合')
    res2 = []
    for j in range(1, 100+1):
        if j%4 == 0 and j%8 == 0:
            res2.append(j)
    print(res2)

    print('lambda式の場合')
    res3 = list(filter(lambda k: k%4 == 0 and k%8 == 0, range(1, 100+1)))
    print(res3)

if __name__ == '__main__':
    main()

出力

リスト内包表記の場合
[8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96]
for文の場合
[8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96]
lambda式の場合
[8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96]