Ich muss testen, ob jede Zahl von 1 bis 1000 ein Vielfaches von 3 oder ein Vielfaches von 5 ist. Die Art, wie ich dachte, ich würde dies tun wäre, die Zahl durch 3 zu teilen, und wenn das Ergebnis eine ganze Zahl ist, dann wäre es ein Vielfaches von 3. Dasselbe mit 5.
Wie kann ich testen, ob die Zahl eine ganze Zahl ist?
Hier ist mein aktueller Code:
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
Dies geschieht mit dem Modulus-Operator "%".
n % k == 0
ist nur dann wahr, wenn n
ein exaktes Vielfaches von k
ist. In der Elementarmathematik ist dies als Rest einer Division bekannt.
Bei Ihrem derzeitigen Ansatz führen Sie eine Division durch und das Ergebnis ist entweder
Es ist einfach der falsche Weg, um die Teilbarkeit zu testen.
Für kleine Zahlen ist n%3 == 0
in Ordnung. Für sehr große Zahlen schlage ich vor, zuerst die Quersumme zu berechnen und dann zu prüfen, ob die Quersumme ein Vielfaches von 3 ist:
def is_divisible_by_3(number):
if sum(map(int, str(number))) % 3 != 0:
my_bool = False
return my_bool
Der einfachste Weg, um zu prüfen, ob eine Zahl eine ganze Zahl ist, ist int(x) == x
. Ansonsten gilt, was David Heffernan sagte.