ChatGPT解决这个技术问题 Extra ChatGPT

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

我需要测试从 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
在 Python 2.x 中,整数除法总是产生一个整数。
您应该打印“Fizz”和“Buzz”
欧拉计划问题 1?

D
David Heffernan

您可以使用模数运算符 %

n % k == 0

当且仅当 nk 的精确倍数时才计算 true。在初等数学中,这被称为除法的余数。

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

如果您使用整数除法,则始终为整数,或者

如果您使用浮点除法,则始终为浮点数。

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


0 % 5 == 0 也是 True ,但零不是零的精确倍数。
@Fusion 0 == 0*5
@Chris_Rands 把它变成一个答案,打代码高尔夫的人(比如我)会很高兴。事实上,我来这里是为了寻找这样的高尔夫球答案。
T
Toby Allen

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


C
Cleb

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

检查是否给定的代码。否时可被 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

B
Bennett Jester

此代码似乎可以满足您的要求。

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)

或任何数量的东西。


回答您的问题:选择和 ctrl+K 缩进。这次我已经为你做了。
b
brandon gossman

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

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

现在你必须把它与你给定的问题联系起来。

if n % 3 == 0 *这就是说,如果我的数字(n)可被 3 整除,则余数为 0。

添加您的 then(print, return) 语句并继续您的


j
james faber
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!")

最好解释一下您给出的修复程序以及它起作用的原因
这不是测试可除性的好方法:进行浮点除法,转换为字符串,然后进行字符串操作以查找小数部分是否(字面意思)“.0”至少是低效的,并且可能是错误的,具体取决于浮点实现和进行转换的代码。
例如,在 python 解释器中尝试 x=10000000000000000; b = str(x/(x-1)); b
h
honk

对于小数字 n%3 == 0 会很好。对于非常大的数字,我建议先计算交叉和,然后检查交叉和是否是 3 的倍数:

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

计算交叉和并使用模运算真的比直接使用模运算快吗?如果是这样,你不应该递归调用你的函数直到数字足够“小”吗?
A
Arif Sarker

尝试这个 ...

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

我怀疑 Java 是 Python,所以这不是一个有效的答案
您的回答与问题无关
D
David Heffernan

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


好吧,对于检查一个数字是否为 int 的问题,这可能是一个不错的答案,但这里的问题是如何检查一个数字是否可以被另一个数字整除......