2013-04-18 3 views
1

Я должен разделить любое число (независимо от размера) другим числом с использованием большого целочисленного разделения с использованием алгоритма Кнута D (искусство программирования тома 2), например 74839234 на 72548.Большое целочисленное подразделение - Алгоритм Кнута D

Я сделал два массива для представления этих чисел

n[] = {7,4,8,3,9,2,3,4} 
d[] = {7,2,5,4,8} 

Я пытаюсь получить такой вывод:

q[] = {1,0,3,1} 
r[] = {4,2,2,4,6} 

Я действительно не знаю, с чего начать это. Любая помощь или руководство будут оценены!

+4

Напишите алгоритм, которому вы были проинструктированы использовать в английских инструкциях, например. как вы могли бы сказать человеку это сделать. Определите структуры программирования, например, для циклов и ifs и whiles. Переписать как псевдокод. Затем перепишите его как код. – Patashu

+0

Какой язык программирования? –

+0

У меня есть некоторые проблемы с пониманием алгоритма. Из-за этого я не знаю, с чего начать, когда псевдокод. Я сижу, играя в excel, пытаясь понять это. – Z3R0

ответ

1

В D1 у вас есть d=1, поэтому установите

n[]={0,7,4,8,3,9,2,3,4} 

n = 5, m = 3.

Кроме того, существует формальная ошибка на этапе D4: (вторая линия) должна быть ...

minus q(hat) times (v1, v2, ..., vn)b TIMES b ** (m - j).

Здесь ** означает «сила» (стиль Fortran для удобной записи). Конечно, b = 10 здесь, поэтому

times b ** (m - j) сдвигает вычитаемое значение слева, в нужное место для вычитания.

 Смежные вопросы

  • Нет связанных вопросов^_^