Наближене обчислення числа Пі

Число Пі — це математична константа, яка представляє собою відношення довжини кола до його діаметра. Значення цієї константи приблизно дорівнює 3.14 в звичайних десяткових позначеннях. Багато формул в математиці, природознавстві і техніці включають Пі, що робить його однією з найважливіших математичних констант. До прикладу, площа кола дорівнює Пі, помноженому на квадрат його радіусу.

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

Авторство відкриття числа Пі невідомо і приписується геометрам з Стародавнього Єгипту, Індії, Греції та Вавилону. Першу спробу обчислити його точне значення запропонував Архімед: він вписував в коло і описував навколо нього правильні багатокутники, згодом зробивши висновок, що значення цієї константи лежить в інтервалі між і .

Обчислення числа Пі — спосіб Архімеда

Приблизно через 600 років після Архімеда китайський математик Цзу Чунчжі застосував аналогічний підхід для правильного багатокутника з 12288 сторонами. Це призвело до наближення значення числа Пі до , яке відповідає шести десятковим розрядам. Зазначимо, що отриманий таким чином результат являвся найбільш точним розрахунком числа протягом наступних 900 років.

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

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

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

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

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

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

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

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

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

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

Основна теорема арифметики стверджує, що будь-яке натуральне число, більше одиниці, можна представити у вигляді добутку простих чисел, причому єдиним способом (якщо не враховувати їх порядок). Наприклад число 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 та реалізуємо процес знаходження НСД за алгоритмом Евкліда.

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

Алгоритм Евкліда — знаходження найбільшого спільного дільника

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

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

// Програма для знаходження найбільшого спільного дільника двох натуральних чисел (НСД)
import java.util.Scanner;
class Greatest_common_divisor {
public static void main (String args[]) {
Scanner scann = new Scanner(System.in);
// Ввід вхідних даних
System.out.print("Enter number1:");
int number1 = scann.nextInt();
System.out.print("Enter number2:");
int number2 = scann.nextInt();

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

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