Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
プロジェクト Euler の 3 番目の演習の解決に取り組んでおり、以下の奇数をループする必要がありますsqrt(600851475143.0)。しかし、ループが繰り返されるたびに数値から 2 を引くことはできません。毎回同じままです。この回答によると、これは数値の格納方法と、小数点のすぐ上と下のすべてが失われることが原因です。これを解決するにはどうすればよいですか?10 進数が必要なため、int を使用できません (とにかく十分な大きさではありません)。
sqrt(600851475143.0)
奇数を探していて、奇数は定義上整数であるため、浮動小数点演算の代わりに適切な整数型を使用してください。