Нок в си шарп

Разработать 4 метода вычисления НОД и НОК

Разработать 4 метода вычисления наибольший общего делитель и наибольшее общее кратное двух заданных c клавиатуры натуральных чисел.
Что бы выводило:
Первый метод «Название»:
НОД=.
НОК=.
Второй метод «Название»:
НОД=.
НОК=.
.
Пятый метод «Название»:
НОД=.
НОК=.
Помогите пожалуйста написать программу. Желательно не сильно за мудрёную в стили вот этой:
Образец:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string str1; Console.WriteLine("Введите текст"); str1 = Convert.ToString(Console.ReadLine()); char[] m = str1.ToCharArray(); char a = '.'; int min = str1.Length; for (int i = 0; i  str1.Length; i++) { if ((m[i] == a) & (i  min)) min = i; } int max = 0; for (int j = 0; j  str1.Length; j++) { if ((m[j] == a) & (j > max)) max = j; } int b = max - min; string str2 = str1.Substring(min + 1, b); Console.WriteLine(str2); Console.ReadKey(); } } }

Источник

Найти НОК 4 чисел

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Console.WriteLine("***Введите 4 числа через пробел***"); string s =Console.ReadLine(); string[] x = s.Split(' '); double a = Double.Parse(x[0]); double b = Double.Parse(x[1]); double c = Double.Parse(x[2]); double d = Double.Parse(x[3]); double nodab=0, nodcd=0; for (int i = Convert.ToInt32(a); i > 0; i--) //НОД для a,b { if (a % i == 0) { if (b % i == 0) { nodab = i; break; } } } double nokab = (a * b) / (nodab); for (int i = Convert.ToInt32(c); i > 0; i--) //НОД для c,d { if (c % i == 0) { if (d % i == 0) { nodcd = i; break; } } } double nokcd = (c*d)/ (nodcd); Console.WriteLine("НОК="+ (a*b*c*d/(nodab*nodcd))); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
class Program { static double classicGCD(double a, double b) { while (b != 0) { double temp = b; b = a % b; a = temp; } return a; } static void Main(string[] args) { Console.WriteLine("***Введите 4 числа через пробел***"); string s = Console.ReadLine(); string[] x = s.Split(' '); double a = Double.Parse(x[0]); double b = Double.Parse(x[1]); double c = Double.Parse(x[2]); double d = Double.Parse(x[3]); Console.WriteLine("НОК=" + a*b*c*d/classicGCD(classicGCD(a, b),classicGCD(c, d))); } }

Источник

Написать алгоритм НОК, НОД

Вычислить НОК, НОД
Доброго времени суток, Подскажите, как вычислить НОК и НОД для некоторых чисел в общем классе.

Нахождение НОД И НОК
Необходимо создать отдельный класс, в котором рассчитывается НОД И НОК для чисел. В общем классе.

НОД и НОК элементов массива
Всем доброго времени суток. Задача: Составить программу нахождения НОД (НОК) элементов массива.

НОД и НОК, двумерный массив
Ребзяяя, помогите, есть прога на нахождение наибольшего общего делимого(НОД) и наибольшего общего.

Эксперт .NET

jenjan, для поиска НОД используйте алгоритм Евклида — в разделе много его реализаций.
После нахождения НОД определить НОК можно по формуле: a * b / НОД(a, b)

Эксперт .NET

jenjan, НОД по алгоритму Евклида с проверкой параметров (если будут переданы отрицательные или ноль)

1 2 3 4 5 6 7 8 9 10 11 12 13
static int Nod(int a, int b) { a = a  0 ? -a : a; b = b  0 ? -b : b; int min = a > b ? b : a; if (min  1) return min; int max = a > b ? a : b; int mod = max % min; if (mod == 0) return min; return Nod (min, mod); }

Пишу здесь — без студии, по памяти.
Могут быть мелкие ошибки.

Этот алгоритм многократно быстрее прямого перебора.
Для больших числе разница в тысячи и миллионы раз.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
using System; namespace NOD { class Program { static void Main(string[] args) { int a = 55; int b = 50; Console.WriteLine(NOD(a, b)); Console.WriteLine(NODRec(a, b)); } private static int NOD(int a, int b) { while (a != b) if (a > b) a -= b; else b -= a; return a; } private static int NODRec(int a, int b) { if (a != b) { if (a > b) a = NODRec(a - b, b); else a = NODRec(a, b - a); } return a; } } }

Эксперт .NET

int a = int.MaxValue; int b = 2;

Источник

Разработать 4 метода вычисления НОД и НОК — C#

Разработать 4 метода вычисления наибольший общего делитель и наибольшее общее кратное двух заданных c клавиатуры натуральных чисел. Что бы выводило: Первый метод «Название»: НОД=. НОК=. Второй метод «Название»: НОД=. НОК=. . Пятый метод «Название»: НОД=. НОК=. Помогите пожалуйста написать программу. Желательно не сильно за мудрёную в стили вот этой: Образец:

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 < class Program < static void Main(string[] args) < string str1; Console.WriteLine("Введите текст"); str1 = Convert.ToString(Console.ReadLine()); char[] m = str1.ToCharArray(); char a = '.'; int min = str1.Length; for (int i = 0; i < str1.Length; i++) < if ((m[i] == a) & (i < min)) min = i; >int max = 0; for (int j = 0; j < str1.Length; j++) < if ((m[j] == a) & (j >max)) max = j; > int b = max - min; string str2 = str1.Substring(min + 1, b); Console.WriteLine(str2); Console.ReadKey(); > > >

Код к задаче: «Разработать 4 метода вычисления НОД и НОК»

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 < class Program < static void Main(string[] args) < int a, b; Console.WriteLine("Ведите первое число."); a = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Ведите второе число."); b = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("НОД: " + NOD(a, b) + " НОК: " + NOK(a, b)); Console.ReadKey(); >static int NOD(int a, int b) < do < if (a >b) a = a % b; else b = b % a; > while (a != 0 && b != 0); return (a + b); > static int NOK(int a, int b) < return ((a * b) / NOD(a, b)); >> >

Источник

Читайте также:  Php curl post urlencode
Оцените статью