C语言 求两个正整数的最大公约数和最小公倍数

如题所述

#include<stdio.h>
int main()
{
int p,r,n,m,temp;
printf("请输入两个正整数:");
scanf("%d,%d",&n,&m);
if(n<m)
{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("最大公约数:%d\n",n);
printf("最小公倍数:%d\n",p/n);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-08

参考代码:

#include<stdio.h>

int main()
{
int a, b, num1, num2, temp;
printf("输入两个正整数: ");
scanf("%d%d", &num1, &num2);
if(num1 > num2)
    {
        temp = num1;
num1 = num2;
num2 = temp;
}
    a = num1;
    b = num2;
    while(b != 0)/*利用辗除法,直到b为0为止*/
{
temp = a % b;
a = b;
b = temp;
}
printf("公约数:%d\n", a);
printf("公倍数:%d\n", num1 * num2 / a);
return 0;
}

追问

为什么这样可以求出最大公约数和最小公倍数。。感觉是不是公式样的

追答

这是数学计算方式,具体的你看看数学上的相关知识吧。

追问

原来如此。。

原来如此。。

本回答被提问者采纳
第2个回答  2015-05-08
#include"stdio.h"
int main()
{
int m, n; int m_cup, n_cup, res; /*被除数, 除数, 余数*/
printf("Enter two integer:\n");
scanf("%d %d", &m, &n);
if (m > 0 && n >0)
{
m_cup = m;
n_cup = n;
res = m_cup % n_cup;
while (res != 0)
{
m_cup = n_cup;
n_cup = res;
res = m_cup % n_cup;
}
printf("Greatest common divisor: %d\n", n_cup);
printf("Lease common multiple : %d\n", m * n / n_cup);
}
else printf("Error!\n");
return 0;
}本回答被网友采纳
相似回答