原题链接:[编程入门]最大公约数与最小公倍数
解题思路:因为笔者才学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分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复