Алгоритм Пи-патрубка иногда дает неверные значенияPython

Программы на Python
Ответить
Anonymous
 Алгоритм Пи-патрубка иногда дает неверные значения

Сообщение Anonymous »

Я написал сценарий для реализации алгоритма, описанного в этом документе, и он работает для подавляющего большинства цифр, но время от времени он ошибается на пару цифр.
Обычно кажется, что у него есть шаблон: одна или две цифры 1 слишком занижены, затем следующая цифра - 10 вместо 0, прежде чем продолжать правильно, пока не повторится снова.
В этой таблице показано несколько случаев, когда это происходит:



мой
фактический
индекс




4
5
32


10
0
33


7
8
85


10
0
86


6
7
167


10
0
168


Код: Выделить всё

def denom(n): return 2*n+1
def nume(n): return n

count = 10000

array = [2]*count
carry = [0]*count
carried = [0]*count
remainder = [0]*count
quotient = [0]*count

pi = ""

idx = 0

while True:
array = list(map(lambda x:10*x, array))
for i in range(count):
i = count-1-i

carried[i] = array[i] + carry[i]

if i == 0:
remainder[i] = carried[i] % 10
break
else:
remainder[i] = carried[i] % denom(i)
quotient[i] = carried[i] // denom(i)
carry[i-1] = quotient[i] * nume(i)
if not int(pi[idx]) == carried[i] // 10:
# if True:
print(carried[i] // 10, end="  ")
print(pi[idx], end="  ")
print(idx+1)
if idx == 610:
break
array = remainder
carry = [0]*count
carried = [0]*count
remainder = [0]*count
quotient = [0]*count

idx += 1

Похоже, что «10» — это код, который пытается перенести в предыдущую цифру, но хотя это имеет смысл, я думал, что вся суть алгоритма втулки заключается в том, что вы можете вычислить любую цифру самостоятельно, тогда как здесь мне придется вычислять больше цифр после, чтобы следить за переносами?
>

Подробнее: https://stackoverflow.com/questions/780 ... ong-values
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»