Обработка “больших” целых чисел в C#

Насколько я помню, вы не можете изменить альфу вида визуального эффекта. Альфа всегда должна быть одна.

6
задан Gumbo 9 May 2010 в 21:04
поделиться

7 ответов

Если вы смотрите только на последние четыре цифры, вам не нужно ничего больше, чем целое число. Учтите следующее:

При умножении двух чисел, если вас интересуют только младшие цифры (т.е. последние четыре цифры), то самые верхние цифры не будут иметь эффекта на младшие цифры результат ... так что вы можете просто « выкинуть » самые значащие (правые) цифры , прежде чем умножить .

Например: я хочу умножить два больших числа, но мне нужны только последние две цифры:

int num1 = 123456789;
int num2 = 987654321;

int result = num1 * num2; // Last two digits would be "69" but this OVERFLOWS

но если мы умножим только последние две цифры ...

int result = (num1 % 100) * (num2 % 100);  // result = 89 * 21

89 * 21 = 1869 (последние две цифры по-прежнему будут « 69 », но мы не переполнили ).

Я использовал этот метод для вычисления шести крайних правых цифр числа 1,

27
ответ дан 8 December 2019 в 02:30
поделиться

.NET 4.0 имеет класс BigInteger

7
ответ дан 8 December 2019 в 02:30
поделиться

Ну, вы можете изменить свой код следующим образом:

    for (int i = 1; i < N; i++)
    {
        if (N % i == 0)
        {
            Console.WriteLine(i.ToString());
            product *= i;
        }
        if (product > 10000 * N)
        {
            product %= 10000;
        }
    }

Это потому, что последние четыре цифры (10000 * k + l) R совпадают что касается l R. Фактический тип продукта зависит от диапазона N, с которым вы хотите работать. Если это все целые числа, тогда product должно быть длинным.

Кстати, почему вы передаете product в качестве параметра, если он всегда равен 1?

1
ответ дан 8 December 2019 в 02:30
поделиться

Как насчет того, чтобы попытаться использовать двойное или длинное вместо int для продукта? Это сработает только в некоторых случаях, но позволит вам работать с большими числами, чем вы могли.

0
ответ дан 8 December 2019 в 02:30
поделиться

Надеюсь, я правильно понял, но вы хотите написать в консоли «0000», если результат 0? Вы пробовали:

Console.WriteLine(i.ToString().PadLeft(4,"0")); 

?

Если вы хотите получить число 0000 как int, извините, но не знаю, как его получить.

0
ответ дан 8 December 2019 в 02:30
поделиться

Если вы не можете перейти на .NET 4.0 прямо сейчас, вы можете использовать BigInteger из библиотеки J # из C #. Вот статья, описывающая, как . Это влияет на развертывание, так как вам необходимо развернуть повторно распространяемый J # .

0
ответ дан 8 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: