周期表 发表于 2023-2-13 17:31:17

为什么输入2得到的是2是素数呢?(2确实是)不应该2%2=0吗?

x=int(input("请输入一个数:"))
    for i in range(2,x):
      if x % i==0:
            print("x不是素数")
            break
    else:
      print("x是素数")

isdkz 发表于 2023-2-13 17:32:31


x=int(input("请输入一个数:"))
    for i in range(2,x+1):
      if x % i==0:
            print("x不是素数")
            break
    else:
      print("x是素数")

sfqxx 发表于 2023-2-13 17:36:02

本帖最后由 sfqxx 于 2023-2-13 17:40 编辑

应该把x变成x+1,不然不会执行for循环
x=int(input("请输入一个数:"))
    for i in range(2,x+1):#改了这里
      if x % i==0:
            print("x不是素数")
            break
    else:
      print("x是素数")
如果答案对您有帮助,请设置最佳答案!

jackz007 发表于 2023-2-13 17:37:58

       因为当 x = 2 时,
for i in range(2 , 2):
    ......
else:
    ......
       这个循环的终止条件是 i == 2,所以,就不会进入循环,直接执行属于 else 的语句了,这样,2 就被判定为素数了。

canfeng0522 发表于 2023-2-13 17:41:48

因为没有进入for循环里面

myd0313 发表于 2023-2-13 21:18:25

range(2,2)返回的结果是一个空列表,这样吧,设range的下限为n,上限为m,那么整个列表就是:

这里是没有m的,需要m+1才能:

x=int(input("请输入一个数:"))
for i in range(2,x):
    if x % i==0:
      print("x不是素数")
      break
    else:
      print("x是素数")
缩进有些不对,帮你改了,希望能得到最佳答案
页: [1]
查看完整版本: 为什么输入2得到的是2是素数呢?(2确实是)不应该2%2=0吗?