从列表的所有索引中获取值(确定素数)

时间:2016-01-15 20:31:15

标签: python python-3.x while-loop

首先,我是Python的新手。我试图通过使用模运算%来确定是否有数字,让我们说167是素数。

如, 让167 % n = some value i

167 % 1167 % 167时,它应该返回0,对于range(2,166)中的n,它应该给出167 % n的余数。我遇到的问题是我试图在167 % n n = 1 ~ 167时打印剩余部分,但不知道如何获取列表索引的值(应该是剩余部分)

所以,这就是我所拥有的:

L  = [] #creates empty list
i=0     #initialize i? 
for i in range(1, 168) :
if 167 % i == 0  :
    print ("There is no remainder")
else :
    167 % i == x   # x should be the value of the remainder 
    L[i].append(x) #attempting to add x ... to the indices of a list. 
    print(L[x])    #print values of x.

如果我可以使用while循环它会更好,这应该更清楚。因此,虽然i从1-167迭代,但它应该将结果x添加到列表的索引中,我想打印这些结果。

任何推荐人?任何帮助赞赏!!非常感谢。

1 个答案:

答案 0 :(得分:0)

这将创建一个不等于零的所有余数的列表:

L  = []
for i in range(1, 168) :
    remainder = 167 % i
    if remainder == 0  :
        print("There is no remainder")
    else:
        L.append(remainder)
        print(remainder)

>>> len(L)
165

您的代码中存在许多问题:

  • 你的缩进是错误的。
  • 在循环之前设置i = 0没有意义,因为它在循环之前未被使用并在循环中被覆盖。
  • 这:167 % i == x将余数与不存在的x进行比较。您希望将结果分配给x x = 167 % i
  • 您尝试使用L附加到索引i的{​​{1}}元素,但是您希望将L[i].append(x)追加到x L }。
  • 最后,您尝试使用L.append(x)获取刚刚添加的值,但需要使用print(L[x]),更简单,只需使用print(L[i])打印remainder