「完全数」というものを聞いたことがあるでしょうか。「完全数って何?」という人も多いかもしれませんね。
ある数Aが、その約数(ただしAを含まない)の総和と等しいとき、その数Aを「完全数」といいます。言葉で説明するとわかりづらいですね。たとえば、6の約数は「1, 2, 3, 6」ですが、このとき、
6 = 1 + 2+ 3
ですので、6は完全数です。一方、10の約数は「1, 2, 5, 10」です。このとき、
10 ≠1 + 2 + 5
ですので、10は完全数ではありません。
この「完全数」を計算するプログラムをpythonで書いてみました。あまり長くならずにできました。
for n in range(2,10000):
x=[1]
for i in range(2,int(n**0.5+1)):
if n/i==int(n/i):
x.append(int(i))
if n/i!=i:
x.append(int(n/i))
sx=0
for i in range(len(x)):
sx==sx+x[i]
if sx==n:
print(n)
このプログラムでは、2から9999の範囲にある完全数を求められます。1行目のカッコの中を変えると、完全数を求める範囲を変えられます。例えば、50から10000にしたい場合は、”in range(50,10001)”と書けばOKです。
プログラムの前半でnの約数の集合xを作成し、後半で集合xの全要素の総和sxがnと等しいか判定しています。
特に何の工夫もない、頭から全部計算していく力任せの方法ですが、参考にしてみてください。