2011-11-03 198 views
62

我需要測試從1到1000的每個數字是3的倍數還是5的倍數。我認爲我會這樣做的方式是將數字除以3,如果結果是整數,那麼它將是3的倍數。與5相同。如何檢查數字是否可以被另一個數字(Python)整除?

如何測試數字是否是整數?

這裏是我當前的代碼:

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 
+1

在Python 2.x中,整數除法總是產生一個整數。 –

+9

您應該打印「Fizz」和「Buzz」 – wim

+7

Project Euler Problem 1? –

回答

147

您此使用模運算符做,%

n % k == 0 

當且僅當nk的整數倍計算爲真。在初等數學中,這被稱爲分部的剩餘部分。

在你現在的做法,你執行除法,其結果將是要麼

  • 始終如果使用整數除法的整數,或者
  • 總是浮如果您使用浮點除法。

這只是測試可分性的錯誤方法。

+1

@Taimur回覆更新 –

+0

偉大的提示!謝謝 – sidonaldson

+0

'不(n%k)'是一個不太可讀的替代品 –

-4

最簡單的方法是測試一個數是否是一個整數是int(x) == x。否則,大衛赫芬南說。

-2

對於小數字n%3 == 0將罰款。對於非常大的數字,我建議先計算交叉總和,然後檢查是否跨總和是3的倍數:

def is_divisible_by_3(number): 
    if sum(map(int, str(number))) % 3 != 0: 
     my_bool = False 
    return my_bool 
+1

正在計算交叉和使用模數運算真的比直接使用模數運算更快嗎?如果是這樣,你不應該遞歸地調用你的函數,直到數字「足夠小」爲止嗎? – honk

0

您可以使用%運營商檢查一個給定數量的divisiblity

檢查是否給出否的代碼。可以由3或5整除。下面給出小於1000:

n=0 
while n<1000: 
    if n%3==0 or n%5==0: 
     print n,'is multiple of 3 or 5' 
    n=n+1 
1

您可以簡單地使用%模運算符來檢查可分性。
例如:n % 2 == 0意味着n爲2和n % 2 != 0整除意味着n是不是2

整除您也可以看看在編程中使用的operators

-3

嘗試......

public class Solution { 

    public static void main(String[] args) { 
    long t = 1000; 
    long sum = 0; 

    for(int i = 1; i<t; i++){ 
      if(i%3 == 0 || i%5 == 0){ 
       sum = sum + i; 
      } 
     } 
     System.out.println(sum);  
    } 
} 
+0

這是誰給誰編碼java –

0

此代碼用來做你所要求的。

for value in range(1,1000): 
    if value % 3 == 0 or value % 5 == 0: 
     print(value) 

或者類似的東西

for value in range(1,1000): 
    if value % 3 == 0 or value % 5 == 0: 
     some_list.append(value) 

或任何數目的事情。

+0

回答你的問題:選擇和ctrl + K縮進。這次我爲你做了這個。 –

-4

Jinja2的模板fizzbuz:

<form> 
    <ol> 
    {% for x in range(1,n+1) %} 
     {% set fizzbuzz_rpm = x %} 
     {% if x % 3 == 0 and x % 5 == 0 %} 
     {% set fizzbuzz_rpm="FizzBuzz" %} 
     {% elif x % 3 == 0 %} 
      {% set fizzbuzz_rpm="Fizz" %} 
     {% elif x %5 == 0 %} 
      {% set fizzbuzz_rpm="Buzz" %} 
     {% endif %} 
     <li>{{fizzbuzz_rpm}}</li> 
    {% endfor %} 
    </ol> 
</form> 
+3

要求提供Python解決方案。 –

0

我有同樣的做法。因爲我不懂如何使用模塊(%)操作符。

6%3 = 0 *這意味着,如果你把6 3,你不會有剩餘,3是6

的因素現在,你必須把它與你的特定問題。

if n%3 == 0 *這就是說,如果我的數字(n)可以被3整除而剩下0的餘數。

添加您的然後(打印,返回)語句,然後繼續你的

相關問題