知恵袋の群数列の問題をPythonで解いてみた。

 知恵袋の群数列の問題Pythonで解いてみました。(^_^;

数列 1/1, 1/2, 3/2, 1/3, 3/3, 5/3, 1/4, 3/4, 5/4, 7/4, 1/5 ……について、この数列の第800項を求めよ。

 ちなみに、群数列の第n群のm番目の項が原数列の第k項だとすると、この問題の場合、次式が成り立ちます。
k=\frac{n(n-1)}{2} + m
また、第n群のm番目の項a_{nm}は、次式で表されます。
a_{nm}=\frac{2m-1}{n}

● GrpSeq1.py

# coding: UTF-8
# GrpSeq1.py

from math import sqrt 
from fractions import Fraction
n=int(sqrt(2*800))+1    # 少し多めにとる
a=[Fraction(2*j-1,i) for i in range(1,n+1) for j in range(1,i+1)]
print(a[799:800])

●実行結果

[Fraction(39, 40)]

※参考URL
●9.5. fractions ? 有理数 ? Python 2.6ja2 documentation
http://docs.python.jp/2.6/library/fractions.html

パーフェクトPython (PERFECT SERIES 5)

パーフェクトPython (PERFECT SERIES 5)