2011-11-03 199 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的余数。

添加您的然后(打印,返回)语句,然后继续你的

相关问题