版权声明:转载 请说明 https://blog.csdn.net/qq2512667/article/details/82320467
闲的蛋疼,刷下初级题....基础很重要
//1、分解素因数法:把每个数分别分解素因数,再把各数中的全部公有素因数提取出来连乘,
//所得的积就是这几个数的最大公约数;先把这几个数的质因数写出来,最小公倍数等于它们所有的质因数的乘积;
static void GreatestCommonDivisorAndLeastCommonMultiple(int a,int b)
{
List<int> zhishuA = new List<int>();
List<int> zhishuB = new List<int>();
for (int i = 2; i <=a; i++)
{
if (a%i==0)
{
a /= i;
zhishuA.Add(i);
i--;//防止相同
}
}
for (int i = 2; i <=b; i++)
{
if (b%i==0)
{
a /= i;
zhishuB.Add(i);
i--;
}
}
int GCD = 1;
for (int i = 0; i <zhishuA.Count; i++)
{
for (int j = 0; j < zhishuB.Count; j++)
{
if (zhishuA[i]==zhishuB[j])
{
GCD *= zhishuA[i];
}
}
}
}
最大公约数 递归
/// <summary>
/// 辗转相除法
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
static float GCD(int a, int b)
{
int c = a % b;
if (c==0)
{
return b;
}
else
{
a = b;
b = c;
return GCD(a, b);
}
}
最小公倍数
public static void LCM(int a, int b)
{
int temp = Math.Max(a, b);
b = Math.Min(a, b);
a = temp; //a 放最大 b最小
int product = a * b;
while (b!=0) //让b 始终是 最小
{
a = a > b ? a : b;
int m = a % b;
a = b;
b = m;
}
Console.Write(product / a);
}