問題タブ [perfect-numbers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
prolog - 1 から 100 までの完全数を見つける
1 から 100 までの完全数をすべて生成するにはどうすればよいですか?
完全数は、その固有約数の合計に等しい正の整数です。たとえば、6(=1+2+3) は完全数です。
c++ - C++ Perfect Number. Need some help revising
I need some help revising this. It keeps only displaying 0s as the temp. Thank you.
c# - 完全数を見つける (最適化)
プログラミング チャレンジの一環として、特定の範囲内で完全数を見つけるプログラムを C# でコーディングしました。ただし、10000 以上の完全数を計算すると非常に遅いことに気付きました。完全数を見つけるための最適化の方法はありますか? 私のコードは次のとおりです。
c++ - 数が完全か素数かを判断する
問題は次のとおりです。「ある数が素数か完全数かを調べる関数を書きなさい。」
これまでのところ、私は最初に完璧な部分に取り組んできました。これが私が持っているものです:
ただし、このコードにはエラーがあるようです。私はその本に目を通しましたが、このトピックについて何も話していません。このコードを修正する方法についてアドバイスが欲しいです。
ありがとう!
c - Cの完全数
完全数を見つけるためにCプログラムを書く必要があります。
if(!(num%i))
-これは私にはわからないdラインです。
他に簡単な方法があれば教えてください
performance - 効率をテストするための良いボーナスクイズを探しています(特に時間に関連する効率)
週に 1 回、コンピュータ サイエンス入門のラボを行っています。次のラボの終わりに簡単なコンテストを開催したいと思っていました。次のようなコードのブロックを提供したいと思います。
彼らはdoSomethingメソッドを実装し、最速のコードを持つ人は一握りのボーナスマークを獲得します.
問題は、質問がやや単純である必要があることです。学生は、ループ、if/else、文字列、追加、配列などをよく理解しています。
質問が何であるかについての私の考えは次のとおりです。
- 1 から 1,000,000 までの完全数をすべて見つけてください。(完全数とは、数のすべての因数を合計するとその数になる数です。つまり、6 = 3 + 2 + 1)
- 1 から 1,000,000 までのすべての素数を見つける
メソッド間のパフォーマンスに測定可能な違いがあるためには、何かを何度も行う必要があると思います。
java - 1からnまでの完全数
1 から n までの完全数を出力するアルゴリズムを作成します。数が完全かどうかを判断するには、その数よりも小さい数のすべての要素を合計します。合計が数と等しい場合、それは完全です。
出力: 24
何も出力されません。何が悪いのかわからない。どこが間違っていますか?while、for、else-if ステートメントしか使用できません。
algorithm - 完全数の場合は数値かどうかをチェックするアルゴリズム
与えられた数が完全数であるかどうかを見つけるためのアルゴリズムを探しています。
私の頭に浮かぶ最も単純なものは:
- 数のすべての要因を見つける
- 素因数を取得し(素数の場合は数自体を除く)、それらを合計して完全数かどうかを確認します。
これを行うためのより良い方法はありますか?検索すると、いくつかのEuclidsの動作が見つかりましたが、適切なアルゴリズムが見つかりませんでした。また、このゴルフスクリプトは役に立ちませんでした: https://stackoverflow.com/questions/3472534/checking-whether-a-number-is-mathematically-a-perfect-number 。
数字などは実際の使用法でキャッシュすることができます[完全な番号がどこで使用されているかはわかりません:)]
しかし、これはインタビューで尋ねられているので、それを最適化する「導出可能な」方法があるはずだと思います。
ありがとう !
f# - 両方の引数を bigint として受け入れる F# Power の問題
私は現在F#を試しています。インターネットで見つけた記事は役に立ちますが、C# プログラマーとして、自分のソリューションが役立つと思っていたのに、役に立たなかった、または部分的にしか役に立たなかったという状況に遭遇することがあります。
したがって、F# (およびおそらくコンパイラのしくみ) に関する知識が不足しているため、ときどき完全にびっくりすることがあります。
たとえば、完全数を決定する C# プログラムを作成しました。完全数はメルセンヌ素数 2p−1(2p−1) (2p-1 は素数、p はべき乗) から形成できるというユークリッド証明の既知の形式を使用します。
F# のヘルプでは、累乗の計算に '**' を使用できますが、浮動小数点を使用すると記載されているため、ビットシフト演算子 (<<<) を使用して単純な関数を作成しようとしました (このコードを編集したことに注意してください必要性を指摘):
ただし、テストを実行してパフォーマンスの改善を探すときは、再帰とパターン マッチャーを使用して電力を計算する Miranda (関数型プログラミング言語でもあります) を使用したことを覚えている形式も試しました。主な利点は、変数yを 64 ビット整数として使用できることです。これは、標準のビットシフト演算子では不可能です。
この関数は実際には高速であることがわかりましたが、その理由は (まだ) 理解できません。おそらくそれはあまり知的な質問ではありませんが、私はまだ興味があります.
2 番目の問題は、完全数を計算するときに、9 番目の完全数 (31 のべき乗から形成される) を見つけた後に、int64 が交差する大きな数を表示できないという事実に遭遇することです。BigInteger オブジェクト (または bigint 型) を使用できるかどうかを調べようとしていますが、ここでは F# に関する私の知識が少し妨げになっています。両方の引数を bigint として受け入れる powerfunction を作成することは可能ですか?
私は現在これを持っています:
しかし、bigint.Zero が定義されていないというエラーがスローされます。だから私もそこで何か間違ったことをしています。0I は、次のエラーが発生するため、置換として受け入れられません。
ただし、パターン マッチャーは「when」ステートメントを使用できません。これを行う別の解決策はありますか?
前もって感謝し、私の長い投稿を許してください。私は自分の「挑戦」をできるだけ明確に表現しようとしているだけです。
f# - 完全数を計算するときのF#並列化の問題?
与えられた指数から完全数を計算する小さなプログラムを最適化しようとしています。
プログラムは(ほぼ)完全に実行されますが、タスクマネージャーを開くと、単一のスレッドで実行されます。つまり、私は何か間違ったことをしているに違いありませんが、F#に関する私の知識はまだ「始まり」の段階にあります。
この質問はできるだけ明確にしようと思いますが、うまくいかない場合はお知らせください。
完全数とは、すべての除数の合計(数自体を除く)が数自体と等しい数です(たとえば、除数1、2、および3の合計は6であるため、6は完全です)。
私は素数を使用して計算を高速化します。つまり、すべての除数が格納されている(巨大な)リストには興味がありません。そのために、Euclidが正しいことが証明された式を使用します:(2 *(numの累乗-1))*(2 *(numの累乗-1))ここで、後者はメルセンヌ素数です。(@Julietによる)stackoverflowの非常に高速なアルゴリズムを使用して、指定された数値が素数であるかどうかを判断しました。
インターネットでいくつかの記事を読んでいると(私はまだ良い本を購入していないので、恥ずかしいです)、シーケンスはリストよりも優れていることがわかりました。そのため、私は最初に完全数のシーケンスを生成する関数を作成し始めました。
ヘルパー関数PowShiftは次のように実装されます。
すべての電力計算のベースは2からであるため、ビットシフト演算子を使用します。したがって、これは簡単な方法である可能性があります。もちろん、私がこれについて尋ねた質問への貢献にはまだ感謝しています:両方の引数をbigintsとして受け入れるF#電源の問題> F#両方の引数をbigintsとして受け入れる電源の問題
Julietが作成した(ここで借用した)関数は次のとおりです。
このコードを並列なしで使用すると、ラップトップで9番目の完全数(37桁で構成され、指数の値31で見つけることができます)を見つけるのに約9分かかります。私のラップトップには2つのコアを備えたCPUがあり、1つだけが50%(1つのコアの全負荷)で実行されているので、結果を並列に計算することで計算を高速化できます。
そこで、完全数関数を次のように変更しました。
この関数を呼び出すには、小さなヘルパー関数を使用して実行します。
非同期計算の結果は、perfectNumbersAsync関数内に表示しているため、無視されます。
上記のコードはコンパイルされて実行されますが、それでも1つのコアしか使用しません(ただし、9番目の完全数を計算すると10秒速く実行されます)。ヘルパー関数のPowShiftとisPrimeで何かをしなければならないのではないかと心配していますが、確かではありません。これらのヘルパー関数のコードをperfectNumbersAsyncの非同期ブロック内に配置する必要がありますか?読みやすさは向上しません...
F#で遊ぶほど、この言語を理解するようになりますが、この場合と同様に、専門家が必要になることもあります:)。
これを読んでくれてありがとう、私は自分自身を少し明確にしたことを願っています...
ロバート。