2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

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

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Перевод из десятичной дроби в обыкновенную - варианты
Сообщение26.03.2015, 17:49 


03/03/13
46
Какой алгоритм перевода конечной десятичной дроби, меньше единицы, заданной конечным набором цифр, в простую несократимую дробь является наиболее эффективным? Первое что приходит в голову - найти НОД данного числа и $10^k$ и сократить на него. Существуют ли другие подходы? Кроме того, дана оценка знаменателя $M<\sqrt{10^k/2}$, не знаю как с ее помощью можно что то сделать.

 Профиль  
                  
 
 Re: Перевод из десятичной дроби в обыкновенную - варианты
Сообщение26.03.2015, 18:24 
Заслуженный участник


04/05/09
4582
Можно не искать НОД по общему алгоритму, т.к. знаменатель делится только на 2 и 5 из простых делителей. Проще делить только на них, причём деление на 2 отлично оптимизируется, да и на константу 5 компилятор может делить быстрее, чем на произвольное число.

 Профиль  
                  
 
 Re: Перевод из десятичной дроби в обыкновенную - варианты
Сообщение27.03.2015, 13:28 
Заслуженный участник
Аватара пользователя


21/11/12
1870
Санкт-Петербург
Deffe в сообщении #996019 писал(а):
Первое что приходит в голову - найти НОД данного числа и $10^k$ и сократить на него.

Если для нахождения НОД используется алгоритм Евклида, то записывайте заодно в строку неполные частные. Получите конечную последовательность знаков $a_1, a_2, ..., a_n$. Стройте теперь новую последовательность $u_n$:

$u_1=a_n$
$u_2=u_1a_{n-1}+1$
$u_3=u_2a_{n-2}+u_1$
$u_4=u_3a_{n-3}+u_2$ и т.д. Последние два члена образуют знаменатель и числитель нужной Вам дроби.

upd
Для конечных легче разделить на НОД, а для периодических может пригодиться.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group