2
for (long long j = factored_num/3; j > 2 || factored_num != 1; j -= 2) {
64ビットコンピュータでは、数値を因数分解しようとしています。 long long j = factored_num
の場合、このコードは正常に動作しますが、整数除算を行うとcout << j
はj
が負であることを示しています。オーバーフローしていると仮定しています。これをどうすれば解決できますか?なぜ私の長い整数オーバーフロー/整数除算で負になっていますか?
型問題の場合は、3LL
、j-= 2LL
などを試しました。繰り返しますが、間違いなく分割部分と関係していますが、すぐに問題を解決するためのデータ型に慣れていません。
'factored_num'の種類は何ですか? – unwind
と 'factored_num'初期値?あなたはそれを初期化しましたか? –
ループ全体を表示しなければなりません。ところで、各要因が「factored_num」を減らし、小さな要因が大きな要因よりも早く見つかる可能性があるため、増加する順序で要因を探す方が良いです。また、 'factored_num/3'ではなく、' factored_num'の平方根( 'j * j <= factored_num')まで検索するだけです。 – TonyK