如何检查一个数字是否可以被另一个数字整除(Python)?

时间:2011-11-03 21:37:38

标签: python integer modulus

我需要测试从1到1000的每个数字是3的倍数还是5的倍数。我认为我这样做的方法是将数字除以3,如果结果是整数然后它将是3的倍数。与5.相同。

如何测试数字是否为整数?

这是我目前的代码:

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

10 个答案:

答案 0 :(得分:180)

使用模数运算符%

执行此操作
n % k == 0
当且仅当nk的确切倍数时,

才会评估为真。在小学数学中,这被称为分裂的剩余部分。

在您当前的方法中,您执行除法,结果将是

    如果使用整数除法,则
  • 始终为整数,或
  • 如果你使用浮点除法,
  • 总是一个浮点数。

这是测试可分性的错误方法。

答案 1 :(得分:2)

您只需使用%模数运算符来检查可分性 例如:n % 2 == 0表示n可以被2整除,n % 2 != 0表示n不能被2整除。

答案 2 :(得分:0)

您可以使用%运算符来检查给定数字的可分性

检查给定否的代码。当没有时,可以被 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

答案 3 :(得分: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)

或任何数量的东西。

答案 4 :(得分:0)

我有同样的方法。因为我不明白如何使用模块(%)运算符。

6%3 = 0 *这意味着如果你将6除以3,你将没有余数,3则是6。

现在你必须将它与你提出的问题联系起来。

如果n%3 == 0 *这就是说,如果我的数字(n)可以被3整除,剩下0个余数。

添加你的then(打印,返回)语句并继续

答案 5 :(得分:-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

答案 6 :(得分:-2)

a = 1400
a1 = 5
a2 = 3

b= str(a/a1)
b1 = str(a/a2)
c =b[(len(b)-2):len(b)]
c1 =b[(len(b1)-2):len(b1)]
if c == ".0":
    print("yeah for 5!")
if c1 == ".0":
    print("yeah for 3!")

答案 7 :(得分:-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>

答案 8 :(得分:-5)

最简单的方法是测试数字是否为整数int(x) == x。否则,大卫赫弗南说。

答案 9 :(得分:-5)

试试这个......

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);    
  }
}