如何翻转素数索引的 1 和 0 位

How to flip the bit of 1 and 0 for prime indexes

我有一个二进制数列表,仅对于素数索引,位需要从 0 翻转到 1 或从 1 翻转到 0。二进制数列表实际上接近 100 位长度。我有一个 8 位长的代码,但它没有显示预期的输出:

def prime_index (input):
p = list(input)
s = ""

# Loop to check if
# index prime or not
for i in range (2, len(p) + 1):
    if isPrime(i):
        s = s + input[i-1]
        flip = {'0': '1', '1':'0'}
        flip=(flip[input[i]])
        print (flip)
print (s)
input="11111111"
prime_index(input)

我得到这样的输出:

0
0
0
0
1111

结果应该是这样的,其中 [2, 3, 5, 7] 的索引位翻转:

output:11001010

希望有人能帮助我。谢谢。

那是因为你在翻转输入之前正在做 s = s + input[i-1] 并且当索引不是质数时你没有附加 s 。试试这个。

def prime_index (input):
  p = list(input)
  s = ""

  # Loop to check if
  # index prime or not
  for i in range (0, len(p) - 1):
    if isPrime(i):
        flip = {'0': '1', '1':'0'}
        flip=(flip[input[i]])
        print (flip)
        s = s + flip
    else:
        s = s + input[i]
  print (s)

input="11111111"
prime_index(input)