与えられた数字が完全な数であるかどうかを見つけるアルゴリズムを探しています。数字が完全な数字であるかどうかをチェックするアルゴリズム
私の心に来るという最もシンプルである:
- は数
- のすべての要因が[それが素数である場合、番号自体を除い]素因数を取得し、それらを合計して下さいそれが完全な数であるかどうかを確認してください。
これを行うより良い方法はありますか? 検索すると、ユークリッドの仕事が始まりましたが、良いアルゴリズムは見つかりませんでした。また、このgolfscriptは役に立たなかった:https://stackoverflow.com/questions/3472534/checking-whether-a-number-is-mathematically-a-perfect-number。など
番号が
しかし、これは面接で聞かれていることから、[私は完璧な番号が:)を使用しているところを知らない]現実世界の使用中などをキャッシュすることができ、私が想定しています「導出」があるべきそれを最適化する方法。
ありがとうございます!
あなたのステップ#2では、_prime_要因の合計ではなく、その要因の合計ではありません。例えば。 1 + 2 + 4 + 7 + 14 = 28(4因子と14因子に注意)のため、28は完璧です。 – mjv
thnx、私はそれを修正しました。 – codeObserver