Другие языки программирования и технологии

Вычисления с очень большими числами (+)

На каком языке программирования можно вычислить 2^50000, используя только стандартные возможности среды (без сторонних библиотек и без написания кучи кода) ?
Типа:
вход: 2^50000
выход: 3160699436856317896135924659945691788984676387834935666847743155564943937902009550....(и так 2 страницы)
>Источник: Написано за пол минуты, выкусите)
Написано на Haskell за несколько секунд:
main = print $ 2 ^ 50000

>Рассчёт результата — пара секунд.
0.003 секунды

PS: почти для всех мейнтримных ЯП есть соответствующие библиотеки, например GSL и биндинги к ней.
Николай Колесников
Николай Колесников
5 079
Лучший ответ
Делфи:

2 ^ 50000 = 3160699436 8563178961 3592465994 5691788984 6763878349 3566684774 3155564943 9379020095 5065106714 4922529420 9742826903 4379806162 2891650247 0600915335 9513017036 5868108099 9701165310 8746704758 3722093787 6396746497 6566207436 6466883324 9279327439 2622222625 6325646619 4795970708 5306541012 6319556645 0954875842 5573162522 9939513738 3358926490 2600586743 5951184963 6154541621 9800983654 0553902746 1898369266 1680305460 2986713771 3007642361 0391258431 6984387046 4218910429 4086240928 5760387607 6421786604 4708427858 2343741975 7887825753 9725567983 5385509255 6176995303 7877328561 2149746612 9661926512 5369311431 3273858994 6054097714 4516368849 0715356137 7200418116 3601828071 8733780759 2038106955 7600586481 0237900789 6398825503 7023373276 0551157423 1862217774 3796223511 3685057004 8758126258 3774163907 4014635869 2544678706 6967165881 1749944572 9509471205 2295582841 3262134950 1233434509 4489338108 6445704327 5166084788 5329573521 4794279795 4228288611 2747824139 6081419738 7596398522 4763459669 8774287547 9842702708 2922311021 7158518692 6214819943 8429398716 2186350943 1137102098 9277297171 6110929927 7316364870 …

Написание программы — около 1 часа.
Рассчёт результата — пара секунд.
Аслан Кулмухан
Аслан Кулмухан
80 993
Евгений Овчинников Ну, вот, целый час программу писать:(
На любом универсальном.

Числа представляются массивами, элемент массива - разряд числа. Количество элементов в массиве может быть о-о-очень велико.

Арифметические операции реализуются "вручную".
Евгений Овчинников Ну а если все-таки не вручную?)
Барабання дробь... .
Это язык Java)

import java.math.*;
public class Main {
public static void main(String[] q) {
BigInteger a=BigInteger.valueOf(2);
a=a.pow(50000);
System.out.println(a.toString());
}
}
Евгений Овчинников Ага....Помедленней хаскеля будет:-)... Правда пока мне отвечали, сам уже нашел информацию про math.BigInteger
И уж сердчать я точно не буду: именно такие ответы я и хотел увидеть.
Велосипедизм мне всё меньше и меньше доставляет удовольствие, а так в принципе можно было вспомнить про ассемблер :-) там это вполне нетрудно реализовать, т.к. mul результат помещает в edx:eax.
Да на любом, практически.

Function zf2(S As Long) As String
'' Возвращает текст = 2^S, где S>0
Dim A() As Long, iI As Long, St As String, i As Long, j As Long
If S < 1 Then
zf2 = 1
Else
iI = 1
ReDim A(1)
A(1) = 2
For j = 2 To S
A(1) = A(1) * 2
For i = 2 To iI
A(i) = A(i) * 2
If A(i - 1) > 9 Then
A(i - 1) = A(i - 1) - 10
A(i) = A(i) + 1
End If
Next i
If A(iI) > 9 Then
A(iI) = A(iI) - 10
iI = iI + 1
ReDim Preserve A(iI)
A(iI) = A(iI) + 1
End If
Next j
For i = iI To 1 Step -1
St = St & A(i)
Next i
zf2 = St
End If
End Function

Написано за 5 минут + отладка и тестирование
Даурен Сахабаев Программа работает несколько секунд. Вот результат:

316069943685631789613592465994569178898467638783493566684774315556494393790200955065106714492252942097428269034379806162289165024706009153359513017036586810809997011653108746704758372209378763967464976566207436646688332492793274392622222625632564661947959707085306541012631955664509548758425573162522993951373833589264902600586743595118496361545416219800983654055390274618983692661680305460298671377130076423610391258431698438704642189104294086240928576038760764217866044708427858234374197578878257539725567983538550925561769953037877328561214974661296619265125369311431327385899460540977144516368849071535613772004181163601828071873378075920381069557600586481023790078963988255037023373276055115742318622177743796223511368505700487581262583774163907401463586925446787066967165881174994457295094712052295582841326213495012334345094489338108644570432751660847885329573521479427979542282886112747824139608141973875963985224763459669877428754798427
Евгений Овчинников Ну это небольшая кучка кода да еще и с отладкой))
А хочется быстро и без циклов :-)