2016-02-20 9 views
0

Я пытаюсь найти способ получить миллионное число + число в читаемом формате (пример a * b^c + d) Является ли это легко/быстрый способ сделать это в python? Или есть какой-то другой язык, который я должен использовать?Попытка найти способ «сжать» очень большое число

Это то, что я пытаюсь сейчас и его очень медленно

  n = 2**1234567890 
      base = 32582657 

      base2 = 1 
      nb= 0 

      while base2 < n : 
        base2 = base * base2 
        nb = nb + 1 
      base2 = base2/base 
      nb = nb - 1 
      j = n - base2 

      if n == (base**nb) + j : 
        print('They match') 

Спасибо

+0

Как насчет научной нотации? – jfsturtz

+1

Это скорее математический вопрос, чем вопрос программирования. – BrenBarn

+0

Мне нужен точный номер, поэтому научная нотация не будет работать. И да, это математический вопрос, но мне нужно программировать для его решения. –

ответ

0

Вы можете сжать цифры в таком виде:

number = 3245552 

if len(str(number)) > 6: 
    zeroes = len(str(number)) - 2 
    decimal = number/10.0**zeroes 
    print round(decimal, 2), '* 10 ^', zeroes 

Выход: 32.46 * 10^5

+0

Мне нужна математика, чтобы быть обратимой. 32.46 * 10^5 = 3246000 –

+0

На самом деле нет способа сжать такую ​​цифру, не теряя некоторые данные. Ну, по крайней мере, я не знаю. @JohnFitch – Areeb