解题思路:因为笔者才学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.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论