2012-01-26 19 views
3

に、a problemが調和シーケンスから20項の収束値を見つけるためのプログラムを書くために私に尋ねる:プロジェクトオイラーでプロジェクトオイラー#368(数学式)

1/111, 1/222, 1/333, 1/444, 1/555, 1/666, 1/777, 1/888, 1/999, 1/1000, 1/1110, 1/1111, 1/1112, 1/1113, 1/1114, 1/1115, 1/1116, 1/1117, 1/1118, and 1/1119 

私はプログラムを自分で書きたいですしかし、問題を解決するには、Calc IIを扱っていないので、私はDivergence/Convergenceを読まなければなりませんでした。すべての説明では、数式で表現できる系列を扱います。このシリーズは、私が知る限り、できません。

だから、質問は次のとおりです。

は、このシリーズを代表する存在式ですまたは式なしで、このシリーズの収束を見つけるための方法はありますか?

+1

http://programmers.stackexchange.com ソフトウェア開発者に関する概念的な質問に興味を持ったプロのプログラマーのためのQ&A – Mchl

+0

実際の作業はあなたが述べたものとは異なることに注意してください。これら20個の要素が削除された高調波の集まりを見つける必要があります。 – Mchl

+2

残念ながら、私は、20項を除いた残りの系列ではなく、20項に関連して「系列が収束する値を求める」というフレーズを誤解していました。それに基づいて、私は問題を解決するために見えるTHOMAS SCHMELZERとROBERT BAILLIEの「SUMMING CURIOUS、SLOWLY CONVERGENT、HARMONIC SUBSERIES」という記事を見つけました。ありがとうMchl – Neobane

答えて

1

問題を注意深く読んだ場合、実際に数式があることに気付くでしょう。対処しているシーケンスは、連続する3桁以上の連続した数字が削除された高調波シリーズです。ブルートフォースアプローチは、必要な精度に達するまで、指定されたものを省略した高調波シリーズのすべての項を合計することです。 RubyのRationalクラスでは、それは本当に素晴らしい候補に思えます。

0

この問題に対する単純でブルートフォースのアプローチは、問題の説明に記載されている制限によって除外されない限り、系列の分母を反復して分母の逆数を総和に加算することです。

概要は次のように次のようになります。

for i in (1..1200) 
    if is_valid(i) then 
    sum += 1.0/i 
    end 
end 

def is_valid(_i) 
    # implement the check here. hint: use modulo operator ;-) 
end 
8

誰もがブルート強制的にそれを考慮念のために:

強引なアプローチになる、ここで、最も高い番号のプロジェクトオイラーの問題のように、妥当な時間内に終了しない。

あなたのコンピュータが1の数値を扱うことができるとします(実際にはこれよりはるかに少ない処理が可能です)。有効な条件を合計すると、nn > 9で約1n-9秒となります。

合計を小数点以下10桁まで決定するには、どのくらいの距離を置く必要がありますか?

より大きいすべての有効な用語の合計が1-10未満であることが十分にあります。 10 で十分でしょうか?米国特許第それらの間無効番号19

1001001001110 
1001001001111 
1001001001112 
... 
1001001001119 
1001001001222 
1001001001333 
1001001001444 
... 
1001001001999 
1001001002000 

これらされているので、そこに981個の有効な数値であると、対応する合計は、その1001001002000分の981より大きい

1001001001001 

から次千数を検討9 * 10 -10以上です。これらの線に沿ったさらなる推論は、1よりもはるかに高い力を必要とすることを示しています。実際には、残りの有効な用語の合計が1になる前に、1を超えなければなりません-10

宇宙の始めに始まったブルートフォースは、まだ信頼できる答えの近くに遠く離れていないだろう。

+0

+1以下になるまで、合計を維持する必要があります。 – duffymo

+2

それはProject Eulerのすべてのことです:) +1 – Mchl