до C, починаючи з i-ій позиції. Якщо вийшла цифра C більше Base - зробити перенос.
). Якщо A не скінчилася, збільшити i на одиницю і йти на крок 3.
5.3 Розподіл
Нехай дільник - звичайне число базового типу. У цьому випадку поділ виконується дуже просто: проходимо по цифрах діленого, починаючи зі старшого розряду по напрямку до молодшого. Для кожної пройденої цифри виробляємо наступні дії: розділити її на B, ціла частина результату додається в кінець загального приватного, залишок переноситься і бере участь в обробці наступній цифри, і т.д. Останній перенесений залишок є залишком від усього поділу.
Розглянемо дії, що здійснюються при діленні A=68971 на B=513 (малюнок 1.5.1). Тут n=5, m=2.
Малюнок 1.5.1 Приклад ділення довгих чисел (горизонтальні лінії проводяться між кроками)
. i=(індекс старшого коефіцієнта A)=4
1.1 «Вгадуємо» q [0]=1.
1.2 Віднімаємо зрушене B * 1=513 з A (на папері при цьому пишемо тільки значиму для наступного кроку частина A)
2. i=3.
.1 «Вгадуємо» q [1]=3.
2.2 Віднімаємо зрушене B * 3=1539 з A.
3. i=2.
.1 «Вгадуємо» q [3]=4.
.2 Віднімаємо зрушене B * 4=2052 з A.
4. i < m=2, процес закінчений. Те, що залишилося від A після вирахувань, є залишком поділу.
Все очевидно, за винятком одного «творчого» кроку - «вгадування». Як змусити комп'ютер генерувати правильне приватна q? Або хоча б достатньо близьке до нього число?
Нехай черговий крок являє собою поділ деякого U=(u 0, u 1, ..., un) на B=(b 0, b 1, ..., bn - 1). Якщо bn - 1? Base / 2, то можна довести такі факти.
. Якщо покласти qGuess=(un * Base + un - 1) / bn - 1, то qGuess - 2? q? qGuess. Інакше кажучи, обчислена таким способом «здогадка» буде не менше шуканого приватного, але може бути більше на 1 або 2.
. Якщо ж додатково виконується нерівність qGuess * bn - 2> Base * r + un - 2, де r - залишок при знаходженні qGuess і qGuess? Base (умова 2), то qGuess - 1? q? qGuess, причому ймовірність події qGuess=q +1 приблизно дорівнює 2/Base.
Таким чином, якщо bn - 1? Base / 2, то можна обчислити qGuess=(un * Base + un - 1) / bn - 1 і зменшувати на одиницю до тих пір, поки не стануть виконуватися умови (2). Вийшло значення буде або правильним приватним q, або, з ймовірністю 2/Base, на одиницю більшим числом.
6. Проблеми в ході виконання курсової роботи
У ході виконання практичної частини моєї курсової роботи виникло декілька проблем
перше, мені хотілося поліпшити швидкодію своєї програми. А оскільки використовуються, зокрема, дуже великі числа, то цей фактор дуже важливий.
Спочатку результати ділення і множення чисел на 2 відразу записувалися в listbox (в процесі підрахунку) і після кожної наступної операції дописувалися туди через що множення довгих чисел відбувалося значно довше через те, що виведення інформації на екран займає відносно багато часу (йдеться про частки секунд і навіть м...