Главная
>>
Каталог задач
>>
Математика
>>
Наибольший общий делитель
Наибольший общий делитель
реализации: C#, количество: 3
Aвтор: this
Дата: 10.07.2003
Просмотров: 174840
Рейтинг:
3/7,4.93(4122)
+
реализации(исходники)
+добавить
Нахождение наибольшего общего делителя 2-х чисел.
Алгоритм Евклида
Медленный но верный алгоритм:
while (i != j)
if (i > j)
i -= j
else
j -= i
return i
Реализации:
C#(3),
C++(6),
pascal(1),
java(2),
C(1)
+добавить реализацию
1)
Алгоритм Евклида, code #65[автор:this]
/* Нахождение наибольшего общего делителя
* между i и j
*/
public int GetCommonDivisor(int i, int j)
{
while (i != j)
{
if (i > j) i -= j;
else j -= i;
}
return i;
}
2)
Алгоритм Евклида в руках нуба, code #561[автор:-]
using System;
using System.Collections.Generic;
using System.Text;
namespace Zadacha1
{
class Program
{
// Решаем задачу с помощью Алгоритма Евклида с вычитанием
static void Main()
{
//Объявляем переменные без инициализации
int i, j, s;
//Вводим переменные
Console.Write("Введите x: ");
string x = Console.ReadLine();
i = Convert.ToInt32(x);
Console.Write("Введите y: ");
string y = Console.ReadLine();
j = Convert.ToInt32(y);
//Задаем цикл, в котором из двух чисел выбирается
//наибольшее и заменяется разностью этих чисел
while (i != j)
{
if (i >= j) i -= j;
else j -= i;
}
//Выводим Наибольший Общий Делитель
if (i > j) Console.WriteLine("НОД = " + j);
else Console.WriteLine("НОД = " + i); return;
}
}
}
3)
нахождение наибольшего общего делителя методом Евклида:, code #630[автор:-]
namespace lab1
{
class Program
{
static int nod (int a, int b)
{
if (a == b)
return a;
else
{
if (a > b)
return nod(a-b, b);
else
return nod(a, b-a);
}
}
static void Main(string[] args)
{
try
{
Console.Write("a= ");
int a = int.Parse(Console.ReadLine());
Console.Write("b= ");
int b = int.Parse(Console.ReadLine());
Console.Write("NOD(a,b)={0}",nod(a,b));
Console.ReadLine();
}
catch (System.Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
}
}
}
}