Huthanble


私信TA

用户名:dotcpp0601994

访问量:107

签 名:

等  级
排  名 24511
经  验 563
参赛次数 0
文章发表 1
年  龄 18
在职情况 学生
学  校 中山大学
专  业 软工

  自我简介:

解题思路:因为笔者才学c没几天,所以用不来gcd等算法,这应该是最原始的一种解出方法。

最大公倍数=两数之积/最小公约数

所以找出一个即可知另一个,笔者先找的是最小公约数,因为它是有限个的。

主要思路是以一个数为标准,找出它的每一个公因数,再将它的公因数带入b中观察余数是否为0(判断是否为公因数就是看余数是否为0,如果是0,说明整除,是公因数)。最后将符合的公因数导入一串数组中,再取出数组中的最大值,即为最大公因数。

笔者的这种方法感觉有不少缺点,其中一个便是不能适用于太大的数,毕竟数组是自己选择大小,是有限的,若公因数太多会装不下。

注意事项:

参考代码:

#include
int main()
{
int a,b,n,i=0;
int arr1[10000];//声明我们用于包含公因数的数组,大小随意设置,输入大就取大一点
scanf("%d %d",&a,&b);
for(n=1;n<=a;n++)//n为公因数,最大不超过a,此时a与b谁大谁小不影响
{
    if(a%n!=0)//取余数,若为0则括号里为假,继续运行(即为公因数),若不为0,则直接重新循环
    {
        continue;
    }
    else if(b%n!=0)//此时在上一步取到一个公因数,再将它与b进行验算,若也是b的公因数,则继续
    {
        continue;
    }    
    arr1[i]=n;//此时将找到的公因数放入数组中
    i=i+1;
}
int maxy=arr1[0];//maxy即为最大公约数
for(int j=0;j<=i;j++)
{
    if(maxy<arr1[j])
    {
        maxy=arr1[j];
    }
}
printf("%d %d",maxy,a*b/maxy);//找出最大公约数与最小公倍数

    return 0;
}


 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区