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

Консольное приложение C#, программисты, выручайте)

Помогите исправить код
1) Данный тест на простоту требует очень точного вычисления значения факториала, т. е. работу с длинными целыми числами и числами с плавающей запятой очень большой точности (стандартные типы не подойдут) .
В том виде в котором он реализован в программе, он максимум может проверить числа в интервале от 1 до 20 (результат теста числа 19 он проваливает) .

2) Не стоит результаты вычислений с числами с плавающей запятой сравнивать с нулем, нужно сравнивать с достаточно маленьким "эпсилон":

class Program {
    static void Main() {
        Console.Write("Введите N: ");
        var n = Convert.ToInt32(Console.ReadLine());
        Console.Write("Введите M: ");
        var m = Convert.ToInt32(Console.ReadLine());

        for (; n <= m; ++n) {
            double factorial = 1;
            for (var i = 2; i < n; ++i) factorial *= i;
            if (Math. Abs(Math. Sin((factorial + 1) * Math. PI / n)) < 0.001) Console.WriteLine(n);
        }
    }
}
Дмитрий Кулькин
Дмитрий Кулькин
69 864
Лучший ответ
1. Был бы виден этот код.
2. И в чем собственно проблема? У вас какая-то ошибка?
Фаниль Хасанов
Фаниль Хасанов
34 701
Обсуждалось уже тут, вот решение:
Elena Melus
Elena Melus
104