Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
Вероника99
5 / 5 / 1
Регистрация: 16.12.2013
Сообщений: 429
#1

Почему при поиске остатка числа выдает неверный результат? - C#

17.05.2016, 21:41. Просмотров 131. Ответов 4
Метки нет (Все метки)

Добрый вечер. Не могу понять в чем проблема. Нужно найти моду числа:
C#
1
2
  double res2 = (Math.Pow(x, (n - 1) / 2));
                        Console.WriteLine("res2  = {0}", (res2 % n));
где х=3,n=121. В результате должно выводить 1,а выводит 93. В чем проблема?Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2016, 21:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему при поиске остатка числа выдает неверный результат? (C#):

Простая задача (расчет по формулам) на синус и косинус выдает неверный результат - C#
Товарищи помогите, тут решаю задачку вроде не сложную, но вот беда выводит всякий бред и не могу понять где ошибка. using System; ...

Почему выдает неправильный результат - C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; // Дан...

Почему данный код выдает ошибку при компиляции? - C#
Чтобы не создавать кучу тем с вопросами по мере обучения, буду задавать их здесь. И вот первый, почему данный код выдает ошибку при...

Не считываются вещественные числа при поиске суммы всех имеющихся в тексте чисел - C#
Не могу найти ошибку, не считываются вещественные числа Найти сумму всех имеющихся в тексте чисел (целых и вещественных, причем...

Вычисление логарифма - неверный результат - C#
Люди добрые, подскажите как в C# представить следующую формулу: x = -log2b пишу так double x = (Math.Log(2,b))*-1 Но видимо...

ChildWindowFromPoint даёт неверный результат - C#
Есть WinForms приложение. В основном окне вызывается дочернее вот таким кодом:new RecordForm().ShowDialog(this);В этом дочернем окне...

4
ORLENOK
82 / 82 / 24
Регистрация: 05.08.2011
Сообщений: 358
Завершенные тесты: 5
17.05.2016, 22:13 #2
Вероника99, В double не помещается число 3^60 степени. Оно округляется, и соответственно потом остаток от деления находится не верно.
0
Вероника99
5 / 5 / 1
Регистрация: 16.12.2013
Сообщений: 429
17.05.2016, 23:17  [ТС] #3
Точно,я об этом не подумала,а что Вы бы посоветовали сделать в этой ситуации?Мне нужно найти остаток от деления этого выражения:
C#
1
(Math.Pow(x, (n - 1) / 2));
Добавлено через 41 минуту
Подключила BigInteger,тоже самое,я в отчаянии
C#
1
2
3
 BigInteger a = (BigInteger)(Math.Pow(x, (n - 1) / 2));
                        BigInteger b = a % n; 
                        Console.WriteLine("Number  = {0}", b );
0
baliar
107 / 78 / 23
Регистрация: 10.08.2014
Сообщений: 420
Завершенные тесты: 1
17.05.2016, 23:20 #4
Не скажу точно, но попробуйте decimal:
C#
1
decimal res2 = (decimal)(Math.Pow(x, (n - 1) / 2));
Хотя я не уверен в том, как поведёт себя Math.Pow

...Нету под рукой на ноутбуке подходящего проекта проверить, а студия на нём тормозит (
0
kolorotur
Эксперт .NET
9102 / 7605 / 1208
Регистрация: 17.09.2011
Сообщений: 13,131
18.05.2016, 11:08 #5
Цитата Сообщение от Вероника99 Посмотреть сообщение
C#
1
double res2 = (Math.Pow(x, (n - 1) / 2));
Почитайте про модульную экспоненту и не прогуливайте математику

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int Modulo(int x, int n)
{
    int result = 1;
    int e = (n - 1) / 2;
 
    while (e > 0)
    {
        if (e % 2 == 1)
            result = (result * x) % n;
        e /= 2;
        x = (x * x) % n;
    }
    return result;
}
Если х2 может быть больше int.MaxValue, то в методе перед вычислениями его можно преобразовать в long.
0
18.05.2016, 11:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2016, 11:08
Привет! Вот еще темы с ответами:

.NET 4.x Неверный результат работы программы - C#
Дано первоначальное число. Изменяем его путем прибавления других чисел и умножения на другие числа. в Конце вычисляется остаток от деления ...

Неверный результат с парсинге JSON - C#
Вот сам JSON который возвращает сайт! Рассмотрю на 1 строке... Нужно вытащить "29539", "The Chaos Engine", "6026" - (На след строке) ...

RegistryKey.GetValueNames() возвращает неверный результат? - C#
Работая с реестром, заметил, что RegistryKey.GetValueNames() возвращает не верный результат. В частности, в одном ключе метод возвращает...

Операции деления дают неверный результат - C#
Всем привет. Если взять такую запись Console.WriteLine(5%2); То получим 1. Но почему когда так: Console.WriteLine(2%7); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru