Программа Collatz Conjecture случайно перестает быть точной при старших цифрах - PullRequest
0 голосов
/ 23 ноября 2018

Итак, пока я занимался серфингом в Википедии, я наткнулся на гипотезу Коллатца Поэтому я решил написать простую программу на Python

while True:
x = int(input("Enter a number: "))
n=0

 while True:
     if  (x % 2) == 0:
         x = x/2
         n += 1
         print(x)
     else:
         x = 3*x +1
         n+=1
         print(x)
     if x == 1:
        break
print("N = %d" %(n))

Сначала я играл со случайными числами, а затемЯ решил проверить некоторые из больших чисел, которые представляет статья в Википедии.Программа работала отлично до 75 128 138 247 в разделе «Примеры» Википедии, ранее она точно соответствовала количеству шагов, а затем просто случайным образом говорит «512» для N (количество шагов. Я просто не понимаю, почему. Может кто-нибудьПомощь?

1 Ответ

0 голосов
/ 23 ноября 2018

Деление на число с плавающей запятой может вызвать проблемы (обратите внимание на вывод в виде числа с плавающей запятой), поэтому работайте в целых числах:

измените

x = x/2  

на целочисленное деление (ваш print соответствует Python 3, поэтомудоступно)

x = x // 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...