C语言定义一个函数,求两个正整数的最小公倍数。然后,利用该函数编写一个程序,从键盘输入读取5个正整数,求出它们的最小公倍数。

定义一个函数,求两个正整数的最小公倍数。然后,利用该函数编写一个程序,从键盘输入读取5个正整数,求出它们的最小公倍数。

先求最大公约数,辗转相除法

#include <stdio.h>
int func(int m,int n)
{
    int t,s = m*n;
    if(m<n)
    {
        int t = m;
        m = n;
        n = t;
    }
    while (t = m % n)
    {
        m = n;
        n = t;
    }
    return s/n;
}

int main()
{
    int a[5],n;
    for(int i=0;i<5;i++)
        scanf("%d",&a[i]);
    n = a[0];
    for(int i=1;i<5;i++)
        n = func(n,a[i]);
    printf("%d\n",n);
    return 0;
}

解答如下

img

#include <stdio.h>
/*
定义一个函数,求两个正整数的最小公倍数。然后,利用该函数编写一个程序,从键盘输入读取5个正整数,求出它们的最小公倍数。
*/ 
int function(int m,int n)
{
    int t,s = m*n;
    if(m<n)//确保m>n 
    {
        int t = m;
        m = n;
        n = t;
    }
    while (t = m % n)
    {
        m = n;
        n = t;
    }
    return s/n;
}
int main()
{
    printf("请输入5个整数: ");
    int t[5];
    for(int i=0;i<5;i++)
        scanf("%d",&t[i]);
       int tem=t[0];//设最小公倍数为 t[0]
       for(int i=0;i<5;i++)//把当前的最小公倍数分别与其它几个数用函数求最小公倍数,得到 5 个数的最小公倍数 
        tem=function(tem,t[i]);
    printf("最小公倍数为:%d\n", tem);
    return 0;
}
 

#include <stdio.h>

int main()
{
    int m = 0;
    int n = 0;
    int tmp = 0;
    printf("请输入两个整数: ");
    scanf("%d %d", &m, &n);

    while (tmp = m % n)
    {
        m = n;
        n = tmp;
    }
    printf("最大公约数为:%d\n", n);
    return 0;
}