неділя, 1 листопада 2015 р.

3733

Найменше спільне кратне

Обчисліть найменше спільне кратне усіх цілих чисел від 1 до N.
Вхідні дані
Вхідний файл містить натуральне число n (1 ≤ n≤ 30).
Вихідні дані
Виведіть ціле число - відповідь до задачі.

import java.util.*; import java.io.*; public class Main{ public static void main(String[] argv) throws IOException{ new Main().run(); } //функція знаходження найбільшого спільного дільника long NOD(long a,long b){ while (a!=0 && b!=0){ if (a > b) a = a % b; //для збільшення швидкості робимо через остачу від ділення else b = b % a; } a=a+b; return a; } //функція знаходження найбільшого спільного кратного long NOK(long a,long b){ //згідно означення НСК=a*b/НОД(a,b) //але щоб зменшити ймовірність виходу за межі розрядності //спочатку ділимо більше, а потім множимо на менше long aa,bb; if (a>b) {aa=a;bb=b;} else {aa=b;bb=a;} return aa/NOD(a,b)*bb; } PrintWriter pw; Scanner sc; public void run() throws IOException{ sc = new Scanner(new File("input.txt")); long n=sc.nextInt(); pw = new PrintWriter(new File("output.txt")); long NOKr=1; //знаходимо НСК для поперднього НСК та наступного числа for (int i=2; i<=n; i++){ NOKr=NOK(i,NOKr); } pw.println(NOKr); pw.close(); } }

Немає коментарів:

Дописати коментар