Числа Фібоначчі: циклом і рекурсією

Числа Фібоначчі — лінійна послідовність натуральних чисел, де перше і друге дорівнюють нулю та одиниці, а кожне наступне — сумі двох попередніх: 0, 1, 1, 2, 3, 5, 8, 13, 21, 43, 55, ... Зазначимо, що ці числа були відомі в Індії ще у столітті. В Європі ж вони в такому вигляді вперше з'явилися в книзі Liber Abaci 1202 року (в перекладі з латинської — «Книга обчислень») за авторством Леонардо Пізанського, згодом прозваного Фібонначі. Значення цієї праці для європейської цивілізації переоцінити неможливо: він вперше знайомив західного читача з індо-арабськими цифрами і ставшими вже звичними для нас арифметичними методами. Одна з найвідоміших включених в неї задач — задача про розмноження кроликів.

Послідовність чисел Фібоначчі

Крім опису зростання приплоду тварин, числа Фібоначчі зустрічаються навіть в самій природі, і на подив доволі часто: це і пелюстки квітки, і спіралі соняшнику, ананаса або соснової шишки.

Читати повністю

Обчислення факторіала великих чисел

В математиці факторіал числа — це добуток всіх натуральних чисел, менших або рівних даному числу. Іншими словами це результат множення всіх чисел від одного до заданого числа. Наприклад, факторіал числа 7 обчислюється як . Факторіал має багато застосувань, особливо в комбінаториці або в задачах підрахунку, тому для написання математичних програм може знадобитися спосіб його обчислення. Якщо Ви працюєте з мовою програмування Java, то матеріал даного параграфу може бути для Вас корисним. Адже сьогодні нами, використовуючи клас BigInteger, буде розроблена Java-програма для обчислення факторіала будь-якого розміру.

Читати повністю

Знаходження головного центру графа (реалізація в середовищі Delphi)

В параграфі розглядається delphi-програма, основним призначенням якої є знаходження головного центру для побудованого користувачем графа. Для того, щоб запустити програму необхідно перейти в каталог де він збережений, знайти файл Project.exe і запустити його. Після запуску програми на екрані відображатиметься вікно наступного вигляду:

Головний центр графа delphi

Головне вікно проекту "Знаходження головного центру графа"

У верхній частині форми міститься панель інструментів (компонент типу TPanel). На панелі розташовується чотири кнопки (дві типу TSpeedButton та дві — TButton) зліва направо: «Додати вершину», «Додати ребро», «Видалити граф», «Знайти головний центр графа». Праворуч від кнопки «Додати ребро» міститься перемикач типу TCheckBox, який відповідає за тип створюваного ребра (якщо перемикач не включений, то програма пряцює в режимі «Розміщення орієнтованого ребра», і навпаки, якщо перемикач включений — в режмрі «Розміщення неорієнтованого ребра». Біла область (компонент типу TImage) називається робочою областю і використовується для візуалізації графа та відображення вершини, яка являється головним центром. Нижня частина форми (компонент типу TMemo) призначена для виводу результатів роботи програми.

Читати повністю

Знаходження головного центру графа

Головний центр грфа - це будь-яка його вершина, відстань від якої до найвіддаленішої точки на ребрах графа є мінімально. Зазначимо, що знаходження головного центру може бути корисно для задач розміщення підприємств, метою яких є мінімізація максимальної відстані яку повинен здолати їх праціник. Наприклад, розміщення станції обслуговування у вершині, яка являється головним центром побудованого для задачі графа, дає змого мінімізувати максимальну відстань, яку повинен здолати ремонтник до можливого місця поломки.

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

Отже, припустимо, що розглядається деякий граф , множина якого містить вершини з номерами від одиниці до . Розглянемо довільне ребро даного графа, довжина якого дорівнює . Нехай  позначає точку на ребрі , яка для всіх віддалена на одиниць від вершини та на одиниць від вершини . Зазначимо, що дана точка називається -точкою.

Головний центр графа

Розміщення точки на ребрі графа

Таким чином, чверть-точкою ребра  є точка, віддалена від вершини  на довжини ребра . Нуль-точкою ребра  являється вершина , а одиничною - вершина . Отже, вершини графа також можуть розглядатися як точки його ребер. Точки ребер, які не є вершинами, називаються внутрішніми. Будь-яка точка ребра повинна бути або внутрішньою, або вершиною. Нехай через позначається множина всіх точок графа . Таким чином, різниця являється множиною всіх його внутрішніх точок.

Читати повністю

Розкладання натуральних чисел на прості множники

Основна теорема арифметики стверджує, що будь-яке натуральне число, більше одиниці, можна представити у вигляді добутку простих чисел, причому єдиним способом (якщо не враховувати їх порядок). Наприклад число 125 можна представити як де 5 — просте число. Нагадаємо, що розкладання чисел на добуток простих множників, називається їх факторизацією.

У цьому параграфі, для розкладання чисел на множники, ми скористаємось методом, який базується на повному переборі всіх простих чисел від двох до заданого числа. Зазначимо, що навіть попри такий недостаток, як необхідність у побудові таблиці простих чисел, даний метод досить швидко справляється із завданням, навіть для дуже великих чисел.

// Програма для знаходження розкладання заданого числа на прості множники
import java.util.Scanner;
class Decomposition_by_factors {
public static void main (String args[]) {
Scanner scann = new Scanner(System.in);
// ВВвід числа, розкладання якого необхідно отримати
System.out.print("Enter a number to decompose: ");
int num = scann.nextInt();
int c_num = num;
int n = 0;
int i = 2;
int table[] = new int[num + 1];
int dec[] = new int[num + 1];
// Побудова таблиці простих чисел
table = Sieve_of_eratosthenes(num);
// Знаходження розкладання заданого числа на прості множники
while (num > 1) {
if (table[i] != 0) {
while (num % table[i] == 0) {
num = num / table[i];
dec[n] = table[i];
n++;
}
}
i++;
}
// Вивід результатів роботи програми
System.out.print(c_num  + " =  "+ dec[0]);
for (int j = 1; i <= n - 1; j++) {
System.out.print(" *  " + dec[j]);
}
System.out.print(";");
}

Для побудови таблиці простих чисел, що не перевищують заданого числа, в програмі визначено додатковий методу Sieve_of_eratosthenes — повертає необхідний нам результат у вигляді масиву.

Читати повністю

Решето Ератосфена — метод пошуку простих чисел

Як ми вже встигли переконатись, не всі числа важко ідентифікувати як прості або складені. Наприклад, будь-яке парне число більше 2 є складеним. Однак, хоча деякі числа можуть бути легко класифіковані, для інших дана процедура може бути надзвичайно складною. На щастя, є деякі прийоми, які дозволяють значно спростити процес відшукання простих чисел. Одним з таких прийомів є сито Ератосфена — математичний інструмент, який використовується для виявлення всіх можливих простих чисел між будь-якими двома числами. Метою цього параграфу є максимально ефективна реалізація даного алгоритму засобами Java, не вдаючись до імпорту будь-яких стандартних бібліотек.

Виходячи з того, що пошук, в даному випадку, завжди буде починатись з двійки, то для здійснення задуманого, від користувача, нам знадобиться лише кінець діапазону. Отже, на першому кроці, реалізуємо процес його введення.

// Програма для генерації простих чисел використовуючи решето Ератосфена
import java.util.Scanner;
class Sieve_of_eratosthenes {
public static void main (String args[]) {
Scanner scann = new Scanner(System.in);
// Ввід кінця діапазону
System.out.print("Enter end of range: ");
int end = scann.nextInt();

Далі, оголошуємо та виділяємо пам'ять під масив з числами цілого типу і, простим присвоюванням в циклі (починаючи з двійки і закінчуючи кінцем діапазону) виконуємо запис значень в його комірки.

Читати повністю

Знаходження найменшого спільного кратного двох чисел

У параграфі розглядається покроковий процес написання нескладної java-програми, яка обчислює найменше спільне кратне (НСК) двох цілих додатних чисел. Зазначимо, що для реалізації задуваного використовується відомий зв'язок між НСК і НСД (найбільший спільний дільник), за яким найменше спільне кратне двох чисел обчислюється як добуток даних чисел, поділений на їх найбільший спільний дільник.

Отже, почнемо написання програми і для початку створимо «Java Project». Потім, в ньому, створимо «Java Class» і назвемо його Least_common_multiple. На наступному кроці, за допомогою методу print, виведемо в консоль запит на введення числа number1 без переходу на наступний рядок. Далі, скориставшись методом nextInt класу Scanner, читаємо введене користувачем ціле число з консолі. Після цього, скопіювавши останні дві інструкції, змінемо їх для зчитування значення числа number2.

Після того, як з вхіднимим даними розібрались, обчислюємо добуток чисел number1 і number2 та реалізуємо процес знаходження НСД за алгоритмом Евкліда.

Читати повністю

Наступна сторінка »