完全数、友愛数、婚約数

Pocket

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

完全数

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

「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)

[ 2011年12月20日 | カテゴリー: 小ネタ | タグ: , , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報