Численные методы. Программа-калькулятор на Pascal

17612
знаков
1
таблица
14
изображений

МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ (МАИ)

(ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

Факультет

«СИСТЕМЫ УПРАВЛЕНИЯ, ИНФОРМАТИКА И

ЭЛЕКТРОЭНЕРГЕТИКА»

Кафедра 308

«Информационные технологии»


Пояснительная записка к курсовой работе

по дисциплине: «Теория чисел»

Выполнил: Тузов И.И.

Группа 03-119

Руководитель:

доцент, к.т.н. Гридин А.Н.

Москва 2010


ЗАДАНИЕ

 

Разработать программу-калькулятор CalcKurs на языке программирования Pascal, реализующую следующие функции:

1. формирование заданного подмножества натурального ряда с помощью общего делителя;

2. факторизация числа с опциями;

3. нахождение НОД и НОК для заданной совокупности натурального ряда;

4. нахождение рациональных решений уравнения с целочисленными коэффициентами;

5. представление рациональной дроби в виде цепной;

6. представление цепной дроби в виде рациональной.

Оборудование и ПО:

Название Windows: Windows Seven (6.1.7600) Ultimate

Название процессора: Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz

Установлено памяти: 1 022,49 MB

Среда программирования: Turbo Pascal 7.0


ОГЛАВЛЕНИЕ

 

Задание

Оглавление

1. Введение

2. Специальная часть

2.1 Интерфейс программы

2.2 Описание процедур

2.2.1 DelOstatok

2.2.2 Factor

2.2.3 NodNok

2.2.4 SuperGorner

2.2.5 Express

2.2.6 AntiExp

3. Заключение

4. Список использованных источников

Приложение

Листинг программы


1. ВВЕДЕНИЕ

 

Теория чисел — это одно из направлений математики, которое иногда называют «высшей арифметикой». Данная наука изучает натуральные числа и некоторые сходные с ними объекты, рассматривает различные свойства (делимость, разложимость, взаимосвязи и так далее), алгоритмы поиска чисел, а также определяет ряд достаточно интересных наборов натуральных чисел.

Так, к примеру, в рамках теории чисел рассматриваются вопросы делимости целых чисел друг на друга, алгоритм Евклида для поиска наибольшего общего делителя, поиск наименьшего общего кратного, малая и большая теоремы Ферма. В качестве самых известных рядов натуральных чисел можно привести ряд Фибоначчи, простые числа, совершенные и дружественные числа, степени и суперстепени натуральных чисел.[1]

Вне самой математики теория чисел имеет довольно мало приложений, и развивалась она не ради решения прикладных задач, а как искусство ради искусства, обладающее своей внутренней красотой, тонкостью и трудностью. Тем не менее теория чисел оказала большое влияние на математическую науку, поскольку некоторые разделы математики (в том числе и такие, которые впоследствии нашли применение в физике) были первоначально созданы для решения особенно сложных проблем теории чисел.[2]

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

 

Назначение программы CalcKurs

 

Программа CalcKurs выполняет следующие функции:

1.формирование заданного подмножества натурального ряда с помощью общего делителя;

2.факторизация числа с опциями;

3.нахождение НОД и НОК для заданной совокупности натурального ряда;

4.нахождение рациональных решений уравнения с целочисленными коэффициентами;

5.представление рациональной дроби в виде цепной;

6.представление цепной дроби в виде рациональной.


2. СПЕЦИАЛЬНАЯ ЧАСТЬ

 

Интерфейс программы

 

 

 

Описание процедур procedure DelOstatok

 

Назначение.

Данная процедура формирует заданное подмножество натурального ряда с помощью общего делителя.

Алгоритм.

Ищется общий делитель совокупности делителей (общий делитель ищется с помощью нахождения наименьшего общего кратного делителей). На заданном множестве (кол-во цифр в числах) ищем первый элемент, который будет удовлетворять заданному условию (делится на НОК с остатком), запоминаем элемент и прерываем цикл.

Формируем подмножество с помощью прибавления к первому элементу делителя, суммируем количество элементов, пока элементы не станут больше заданной размерности.

Пример.

Делитель=10, остаток=3, размерность=2 (от 10 до 99)

Количество элементов=9

Подмножество элементов={13, 23, 33, 43, 53, 63, 73, 83, 93}

Тесты.

1.Некорректные данные

2.Корректные данные

procedure Factor

 

Назначение.

Данная процедура выполняет факторизацию (разложение на простые множители) числа с опциями.

Алгоритм.

Ищем для данного числа простой множитель с помощью решета Эратосфена[3]

(Для нахождения всех простых чисел не больше заданного числа n, следуя методу Эратосфена, нужно выполнить следующие шаги:

1.         Выписать подряд все целые числа от двух до n (2, 3, 4, …, n).

2.         Пусть переменная p изначально равна двум — первому простому числу.

3.         Вычеркнуть из списка все числа от 2p до n, делящиеся на p (то есть, числа 2p, 3p, 4p, …)

4.         Найти первое не вычеркнутое число, большее чем p, и присвоить значению переменной p это число.

5.         Повторять шаги 3 и 4 до тех пор, пока p не станет больше, чем n

6.         Все не вычеркнутые числа в списке — простые числа.)

и делим заданное число на данный множитель, потом ищем следующий простой множитель(если он повторяется, то возводим его в степень), и так до тех пор, пока число не станет равным единице. Записываем все простые множители.

Далее находим все делители числа и составляем из них множество. Вычисляем сумму делителей.

Пример.

Число=21

множество делителей=1 3 7 21

кол-во простых множителей=2

21=3 ^ 1 * 7 ^ 1

кол-во множителей=4

сумма множителей=32

Тесты.

1.Некорректные данные

2.Корректные данные


procedure NodNok

 

Назначение.

Данная процедура находит НОД и НОК для заданной совокупности натурального ряда.

 

Алгоритм.

С помощью алгоритма Евклида (есть числа a,b и последовательность R1>R2>R3>…>RN, где каждое RK - это остаток от деления предпредыдущего числа на предыдущее, а предпоследнее делится на последнее нацело. Тогда НОД(a,b), наибольший общий делитель a и b, равен RN, последнему ненулевому члену этой последовательности) находим НОД[4] для первых двух чисел, «цепляем» следующее число для нахождения следующего НОД, и так до тех пор, пока совокупность чисел не закончится.

Для нахождения НОК первых двух чисел используем следующий алгоритм: разлагаем данные числа на простые множители и к одному из таких разложений приписываем множители недостающие у него против разложений остальных данных чисел[5], и аналогично нахождению НОД «цепляем» следующее число.

Пример.

Числа: 21 и 12

НОД(12,21)=3

НОК(12,21)=84


Тесты.

 


Информация о работе «Численные методы. Программа-калькулятор на Pascal»
Раздел: Информатика, программирование
Количество знаков с пробелами: 17612
Количество таблиц: 1
Количество изображений: 14

Похожие работы

Скачать
225314
2
0

... раза. В силу специфичности информации схемы определения количества информа­ции, связанные с ее содержательной стороной, оказы­ваются не универсальными. Универсальным оказывается алфавитный подход к измерению количества информации. В этом подходе сообщение, представленное в какой-либо знаковой системе, рассматривается как совокупность сообще­ний о том, что заданная позиция в последовательнос­ти ...

Скачать
225204
6
0

... полезно учителю при подготовке рассказа на уроке. В данной публикации сделана попытка выделить тот самый минимум, который ученику необходимо включить в свой ответ на экзамене. Примечания для учеников При ответе надо быть готовым к дополнительным вопросам об обосновании тех или иных утверждений. Например, каковы максимальное и минимальное значения 8-битного целого числа со знаком и почему их ...

Скачать
29192
2
0

... классики полезно вспомнить о потенциальном резерве времени, который объективно появляется при использовании систем автоматизации математических расчетов, и использовать этот резерв для резкого расширения круга изучаемых задач и методов вычислений. Незаменима роль системы Derive для интенсификации обучения при подготовке к вступительным экзаменам по математике. Ситуация известна: школьный курс ...

Скачать
61373
2
1

... выполнения этой функции */  /* указатель q должен быть возвращен в первоначальное */  /* положение */  free(++q);  /* Рассмотрим возможность изменения индексации и */  /* освобождения памяти для двумерного массива */  b=(float **)calloc(m,sizeof(float *));  for (i=0; i < m; i++)  b[i]=(float *)calloc(n,sizeof(float));  /* После распределения памяти начальным элементом */  /* массива ...

0 комментариев


Наверх