解题思路:因为笔者才学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 人评分
点我有惊喜!你懂得!浏览:1670 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:542 |
C语言训练-舍罕王的失算 (C语言代码)浏览:1033 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:677 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:718 |
C二级辅导-公约公倍 (C语言代码)浏览:1508 |
C语言训练-数字母 (C语言代码)浏览:649 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:536 |
用筛法求之N内的素数。 (C语言代码)浏览:664 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:543 |