解题思路:因为笔者才学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 人评分
2005年春浙江省计算机等级考试二级C 编程题(3),复杂度最低的方法没有之一!!!!!浏览:804 |
C语言程序设计教程(第三版)课后习题7.4 (Java代码)浏览:839 |
C二级辅导-计负均正 (C语言代码)浏览:647 |
C语言训练-求矩阵的两对角线上的元素之和 (C语言代码)浏览:598 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:724 |
大神老白 (C语言代码)浏览:638 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:587 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:331 |
回文数字 (C语言代码)浏览:2509 |
数对 (C语言代码)浏览:697 |