using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Greatest_common_divisor
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("输入一组正整数(数量小于20),输出其最大公约数。");
var input = Console.ReadLine();
var arrInput = input.Split(' ');
Console.WriteLine(GetAllGCD(arrInput));
}
/// <summary>
/// 获取最大公约数,辗转相除法
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static int GetGCD(string sa, string sb)
{
var a = int.Parse(sa);
var b = int.Parse(sb);
return a%b == 0 ? b : GetGCD(b.ToString(), (a%b).ToString());
}
public static string GetAllGCD(string[] arrInput)
{
//前一个和相邻的后一个比较,获得最大公约数再和第三个比较,一直迭代下去。
var rIndex = 0;
//注意遍历的次数
for (int i = 0; i < arrInput.Length - 1; i++)
{
var result = GetGCD(arrInput[i], arrInput[i + 1]);
//将结果赋给后一个元素
arrInput[i + 1] = result.ToString();
//记录结果在数组中的位置
rIndex = i + 1;
}
return arrInput[rIndex];
}
}
}
取数组最大公约数
最新推荐文章于 2024-02-07 20:46:12 发布