原题:输入两个整数XY,X是M,N的最大公约数,Y的M,N的最小公倍数,求存在的M,N的组合。
using System;namespace ConsoleApplication7
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入最大公约数(整数):");
int num1 = int.Parse(Console.ReadLine());
Console.WriteLine("请输入最小公倍数(整数):");
int num2 = int.Parse(Console.ReadLine());
Console.WriteLine("所有M和N的组合有:");
for (int i = num1; i <= num2 + 1; i++)
{
for (int j = num1; j <= num2 + 1; j++)
{
if (Func1(i, j) == num1 && i*j/num1 == num2)//M*N=X*Y
{
Console.WriteLine(i+","+j);
}
}
}
Console.ReadKey();
}
/// <summary>
/// 求最大公约数
/// </summary>
/// <param name="p"></param>
/// <param name="q"></param>
/// <returns></returns>
public static int Func1(int c, int d)
{
int temp=0;
{
temp = c%d;
c = d;
d = temp;
}
return c;
}
}
}
利用辗转相除法求解最大公约数,他的具体做法如下:用小的数除大的数,再用出现的余数去除除数,再用出现的余数去除第一次得到的余数,这样一直反复计算,知道最后余数是0为止。最大公约数就是最后的除数。(求解最大公约数的方法就是按照这个思想来写的)
本文介绍了一种方法,通过输入最大公约数和最小公倍数,找到所有可能的整数对(M, N),使得M和N的最大公约数等于给定的最大公约数,且它们的最小公倍数等于给定的最小公倍数。使用了辗转相除法求最大公约数。
1919

被折叠的 条评论
为什么被折叠?



