Как мне поднять действительно большое число до действительно большой силы?
У меня есть ulong
значение, которое мне нужно поднять до высокой мощности, но Math.Pow
не дает правильного вывода.
Мой код C#:
ulong a = 9123456789;
ulong b = (ulong)Math.Pow(a, 9999);
Console.WriteLine(b);
Вывод на экран равен 0. Как я могу выполнить этот расчет и получить правильный результат?
2 ответа
Решение
Да, это число можно вычислить, используя специализированный BigInteger
учебный класс. Это безнадежно пытаться сделать это с ushort
, который имеет ширину 16 бит.
using System;
using System.Collections;
using System.Numerics;
public class Test
{
public static void Main(string[] args)
{
BigInteger a = 9123456789;
BigInteger b = BigInteger.Pow(a, 9999);
//Output this number if you're feeling lucky.
Console.WriteLine(b);
}
}
Выходы
43056151396124937171542222696555900626431494491043369510338912076154406943108
..
8614367506747618876018379290109
Кстати, вам нужно 330 837 бит для хранения результата.
Посмотрите на BigInteger, если вы собираетесь работать с очень большими числами.