Карта сайта

Это автоматически сохраненная страница от 30.07.2013. Оригинал был здесь: http://2ch.hk/b/res/52520453.html
Сайт a2ch.ru не связан с авторами и содержимым страницы
жалоба / abuse: admin@a2ch.ru

Втр 30 Июл 2013 22:31:46
В /pr/ 3.5 анона, так что прошу помоши тут.
Есть один Питон. И на нем есть одна либа gmpy2. И эта либа мне нужна для вычисления больших чисел. Так вот сижу я, пишу код и какая-то ересь творится. Вот гляди:
1. Беру число N
2. Вычисляю sqrt(N)
3. Добавляю единицу
4. Возвожу в квадрат
5. Отнимаю N
6. Получаю отрицательное число

КАК???
Вот код
import gmpy2
import math

def compute1(N):
bigA = gmpy2.sqrt(N)
print ("bigA = ")
print (bigA)
bigASquare = gmpy2.mul(bigA, bigA)
print ("bigASquare = ")
print (bigASquare)
subResult = gmpy2.sub(gmpy2.mpz(bigASquare), N)
print ("subResult = ")
print (subResult)
x = gmpy2.isqrt(subResult)
print ("x = ")
print (x)
p = gmpy2.sub(bigA, x)
q = gmpy2.add(bigA ,x)
if gmpy2.mul(p, q) == N:
print (p)
else:
print ("Error!")

#problem 1
prob1 = gmpy2.mpz('17976931348623159077293051907890247336179769789423065727343008115' +
'77326758055056206869853794492129829595855013875371640157101398586' +
'47833778606925583497541085196591615128057575940752635007475935288' +
'71082364994994077189561705436114947486504671101510156394068052754' +
'0071584560878577663743040086340742855278549092581')

a = compute1(prob1)


А выводит он:
bigA =
1.3407807929942597e+154
bigASquare =
1.7976931348623159e+308
subResult =
-4657554276902126805446938465387507665770658051350089833417156114078152858066960818823721703192090664450415406229841169257740697864935003057466372018686593391133600474274326777330016855485286320931331725263323781505386525654324955365


Я что-то делаю не так? Первый раз пишу на питоне, так как на шарпе не нашел удобных либ для такой херни.


Втр 30 Июл 2013 22:33:12
>>52520527
Но для питона туева хуча либ для всякой фигни. В общем из-за этого и скачал его.

Втр 30 Июл 2013 22:42:48
>>52520834
Вверх

Втр 30 Июл 2013 22:43:33
Вангую, что ОП ХУЙ, не знает, что такое разрядная сетка и что бывает, при выходе за неё.
код не смотрел, питон не нужен

Втр 30 Июл 2013 22:45:36
>>52521086
Ох лол. А либу для вычисления длинных чисел я просто для фана юзаю.

Втр 30 Июл 2013 22:57:38
>>52521168
Ну же, анончик, растолкуй что к чему.

Втр 30 Июл 2013 22:57:51
>>52520453
Скорее всего проблема в 1.3407807929942597e+154 этом формате чисел, не помню как называется. Возможно, он их парсит не верно.

Втр 30 Июл 2013 23:00:02
>>52520453

-> StackOverflow

Втр 30 Июл 2013 23:01:08
>>52520453
На всяк случай спрошу, табы нигде не проебал?

Втр 30 Июл 2013 23:01:52
>>52521993
да вроде нет

Втр 30 Июл 2013 23:03:39
Вот распарсил. Нифига не изменилось.
import gmpy2
import math

def compute1(N):
bigA = gmpy2.mpz(gmpy2.sqrt(N))
print ("bigA = ")
print (bigA)
bigASquare = gmpy2.mul(bigA, bigA)
print ("bigASquare = ")
print (bigASquare)
subResult = gmpy2.sub(gmpy2.mpz(bigASquare), N)
print ("subResult = ")
print (subResult)
x = gmpy2.isqrt(subResult)
print ("x = ")
print (x)
p = gmpy2.sub(bigA, x)
q = gmpy2.add(bigA ,x)
if gmpy2.mul(p, q) == N:
print (p)
else:
print ("Error!")

#problem 1
prob1 = gmpy2.mpz('17976931348623159077293051907890247336179769789423065727343008115' +
'77326758055056206869853794492129829595855013875371640157101398586' +
'47833778606925583497541085196591615128057575940752635007475935288' +
'71082364994994077189561705436114947486504671101510156394068052754' +
'0071584560878577663743040086340742855278549092581')

a = compute1(prob1)


Результат:
bigA =
13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096
bigASquare =
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
subResult =
-4657554276902126805446938465387507665770658051350089833417156114078152858066960818823721703192090664450415406229841169257740697864935003057466372018686593391133600474274326777330016855485286320931331725263323781505386525654324955365

Втр 30 Июл 2013 23:05:37
>>52522143
>x = gmpy2.isqrt(subResult)
>isqrt
>i
Нэ? i-ем обычно обозначают знаковые хуйни

Втр 30 Июл 2013 23:07:24
Пункт первый при работе с питоном: убедись, что эта либа поддерживается установленной у тебя версией питона.

Втр 30 Июл 2013 23:08:42
>>52522246
Эта строчка нинужна. Главная проблема появляется до нее. subResult по логике вещей должен быть положительный.

Втр 30 Июл 2013 23:10:00
https://code.google.com/p/gmpy/</span>

Втр 30 Июл 2013 23:14:16
>>52520453
Пределы чичсловых типов данных отслеживаешь, дебил?

Втр 30 Июл 2013 23:18:30
>>52520453
Почему ты на 3.х кодишь?


← К списку тредов