文字列の類似度を計算するレーベンシュタイン距離をPython、VBAで実装

文字列が二つあったとき、これらがどれほど類似しているかを知るための指標の一つがレーベンシュタイン距離です。
厳密に言えば「どれほど相違しているかを示す指標」です。 (さらに…)

翻訳ツール「TexTra」の翻訳精度比較とAPI使用例

国産の翻訳ツールTexTraを使ってみました。 (さらに…)

学年別のふりがなを自動的に振る「Furigana」

Yahoo!APIに漢字にふりがなを付ける機能があります。
しかも、小学何年生かを指定することができます。
習っていない漢字のみにふりがなを付けられます。
これを使って「Furigana」というツールを使いました。 (さらに…)

完全数、友愛数、婚約数

完全数、友愛数、婚約数について調べました。

完全数

「自ら」=「自らを除いた約数の合計」となる整数。

「6」が完全数。
6の約数は1,2,3,6なので6を除いた1,2,3を合計すると6になる。
6=1+2+3
「28」も完全数。
28=1+2+4+7+14
その次の完全数は「496」である。

友愛数

互いに「相手」=「自らを除いた約数の合計」となる整数の組。

「220」と「284」が友愛数。
220の約数は1,2,4,5,10,11,20,22,44,55,110,220なので220を除いて合計すると284になる。
284の約数は1,2,4,71,142,284なので284を除いて合計すると220になる。
284=1+2+4+5+10+11+20+22+44+55+110
220=1+2+4+71+142

婚約数

互いに「相手」=「1と自らを除いた約数の合計」となる整数の組。

「48」と「75」が婚約数。
友愛数に似ているが1を除いて合計する点が違う。
75=2+3+4+6+8+12+16+24
48=3+5+15+25

完全数を求めるコード

def is_perfect(num):
  # 完全数ならばTrueを返す関数
  ns = divisors(num)
  if num == sum(ns) - num: # 「自ら」=「自らを除いた約数の合計」
    return True
  else:
    return False

def divisors(num):
  # 約数を列挙する関数
  ns = []
  for n in range(1, num + 1):
    if num % n == 0:
      ns.append(n)
  return ns

# 1から1000まで完全数ならば印字する
for num in range(1, 1001):
  if is_perfect(num):
    print(num)

タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報