1 から 1000 までの各数字が 3 の倍数か 5 の倍数かをテストする必要があります。
このコードを Python 2.x で試してみました:
n = 0
s = 0
while (n < 1001):
x = n/3
if isinstance(x, (int, long)):
print 'Multiple of 3!'
s = s + n
if False:
y = n/5
if isinstance(y, (int, long)):
s = s + n
print 'Number: '
print n
print 'Sum:'
print s
n = n + 1
アイデアとしては、数値を割ってみて、結果が整数になるかどうか確認することです。しかし、期待した結果が得られません。
数値が整数かどうかをテストするにはどうすればよいですか?
2.xでは、このような割り算は整数を生成し、余りは切り捨てられます。除算を強制的に浮動小数点にするにはどうすればいいですか? 除算が 0 に切り捨てられ続けますか?詳細については。
3.xでは、除算は浮動小数点値を生成します。結果はではありません「整数」たとえそれが整数であってもなので、isinstance
チェックは失敗します。整数の割り算を行うと、別の整数ではなく浮動小数点数が生成されるのはなぜですか?詳細については。
割り切れるかどうかのテストだけではなく、整数の割り算の余りが必要な場合は、数値の割り算の余りを求める。
ベストアンサー1
これは剰余演算子を使って行います。%
n % k == 0
n
が の正確な倍数である場合にのみ true と評価されますk
。初等数学では、これは割り算の剰余として知られています。
現在のアプローチでは、割り算を実行すると、結果は次のいずれかになります。
- 整数除算を使用する場合は常に整数、または
- 浮動小数点除算を使用する場合は常に float になります。
それは割り切れるかどうかをテストする方法としては間違っています。