农夫三 发表于 2020-8-25 12:15:41

除数

爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。



为什么不可以这样:
a= 10e1000000
for i in a :
        if((a %2 == 1)and (a %3 ==2 )and (a %5 == 4)and(a %6 ==5)and(a%7 == 0)):
                        print(a)

先定一个无穷打的数,然后根据题目每个条件都满足,即可满足题意呢?

永恒的蓝色梦想 发表于 2020-8-25 12:18:50

a= int(10e1000000)
for i in range(1, a) :
      if((a %2 == 1)and (a %3 ==2 )and (a %5 == 4)and(a %6 ==5)and(a%7 == 0)):
                        print(a)

sunrise085 发表于 2020-8-25 13:53:33

可以啊,只是你的程序写错了
1、for后面一个是一个可迭代对象
2、if中的条件一个是 i,而不是a, i才是可变量,a 一直没变。print中也是如此
a= int(10e1000000)
for i in range(a) :
    if((i %2 == 1)and (i %3 ==2 )and (i %5 == 4)and(i %6 ==5)and(i%7 == 0)):
      print(i)

Twilight6 发表于 2020-8-25 14:36:44



Python 这里的科学计数法都属于浮点型,而浮点型不能作为 range 函数的参数,所以你要将浮点型的值转化为整型

但是在这里,你的 10e1000000 Python 会认为就是浮点型无穷大,而浮点型无穷大不能转化为整型,导致你 int(10e1000000) 也会报错

所以这里建议不用一个值来表示无穷大吧,反正无穷大可以类似看作无限死循环吧,那么我们就用 while True 即可

参考代码:

i = 1
while True:
    if((i %2 == 1)and (i %3 ==2 )and (i %5 == 4)and(i %6 ==5)and(i%7 == 0)):
      print(i)
    i += 1

Ps:Python 的无穷大可以这样表示:float('inf')


页: [1]
查看完整版本: 除数