Добрый день. Реализовал вероятностный алгоритм определение простоты числа на основе малой теоремы Ферма. Однако, есть проблема, что тип при даже 11-значном числе, переполняется. Вопрос как можно элегантно решить эту проблему не используя BigInteger? Сам метод
public static ulong IsPrimeNumb(ulong n, ulong a)
{
ulong e = 1, b=a;
for (var i = n; i > 0;)
{
if (i % 2 == 1)
{
e = (e * b) % n;
}
b = (b * b) % n;
i /= 2;
}
return e == a ? n : 0;
}
e = (e * b) % n;
b = (b * b) % n;
Произведение чисел при делении на некоторое число дает тот же остаток, что и произведение их остатков.
Например, посчитаем остаток 107*207 по модулю 4. Числа 107 и 207 при делении на 4 дают остаток 3, если перемножить эти остатки получится 9. А 9 при делении на 4 дает остаток 1, значит, и 107*207 дает остаток 1.
e = ((e % n) * (b % n)) % n;
b = ((b % n) * (b % n)) % n;
Теперь переполнения быть не должно. Что касается типов данных, то можно использовать decimal, если тебе просто не хватает разрядов для входных значений.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Хочу сохранять при закрытии формы данные в файл и потом загружатьПри сохранении все сохраняется, а при открытии не загружается
Используется Visual Studio 2015; Devexpress 171
Есть терминальный сервер нужно: 1Программно получить список всех пользователей запущенных на компьютере (как в диспетчере задач Windows) 2