遅すぎます。これは既に見たi
に達するまで続きます。私のアルゴリズムは、iは整数<code>x</code>と<code>i</code>の1つの< <code>i</code> < <code>x</code>次の値を<code>i = floor(x/i) + (x mod i)</code>によって計算されるように、出発整数<code>i</code>ためにそのアルゴリズムを有する
(この質問はあるものの、言語に依存しない):
function f(x, i) {
var map = {};
while(!map[i]) {
map[i] = true;
i = Math.floor(x/i) + (x % i); // ~~(x/i) is a faster way of flooring
}
return i;
}
私たちは最終的に我々はすでに見てきたi
に達するであろうことを証明することができますが、私は思ったんだけど:
- 次の
i
をより効率的に計算する方法はありますか? - (さらに重要なこと)ループ
n
回を実行することなく、n番目のi
を計算する方法はありますか?
だけ明確にする - 私はそのチェックのためのJSハッシュマップを使用するよりも速い方法があります知っている、そしてその床材は、他の言語で整数除算に置き換えることができます。私はこれらの最適化を両方行いましたが、コードを理解しやすくするためにそれらを残しました。混乱を招いて申し訳ありません。
ありがとうございます!
Collatzの推測のようないくつかの既知の数学的問題はありますか? – MBo
@MBo私が知っているわけではありません。それは私が取り組んでいるサイドプロジェクトから生まれました。それが知っていることは素晴らしいことが分かっている既知の数学的な問題に関連している場合!私は数週間前に同様の数学的問題について検索しましたが、何も思い付きませんでしたし、問題をあまり改善しなかったので、他の人に助けを求めることに決めました。 – winhowes