Как мне поднять действительно большое число до действительно большой силы?

У меня есть 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, если вы собираетесь работать с очень большими числами.

Другие вопросы по тегам