目录
求最小公倍数的三种方法
求最大公因数的补充:
谁都不能阻挡你成为更优秀的人。
废话不多说,直接上代码。
//法一:暴力(定义)求解 //最小公倍数的本质是一个最小的能同时被两整数整除的自然数 int main() { int m = 0; int n = 0; scanf("%d%d", &m, &n); int a = 0; a = ((m) > (n)) ? (m) : (n); while (1) { if ((a % m == 0) && (a % n == 0)) { break; } a++; } printf("%d", a); return 0; }
//法二: int main() { int m = 0; int n = 0; int i = 1; scanf("%d%d", &m, &n); //当然这里也可以是 while (((m * i) % n) != 0) // m*i%n { i++; } printf("%d", m*i); //注意这里 return 0; }
//法三:最大公因数求解 //如求 3 12 最小公倍数 就是 3*12/3(最大公因数), // 3 5 最小公倍数 就是 3*5/1 。 int main() { int m = 0; int n = 0; int c = 0; int a = 0; int b = 0; scanf("%d%d", &m, &n); a = m; b = n; while (c=a%b) { a = b; b = c; } //注意这里只有b才是最大公因数,这是辗转相除法规定的, //当然你也可以说是欧几里得法更帅不是嘛哈哈。 printf("%d",m*n/b); return 0; }
//求最大公因数的两个补充,上面已经说到了辗转相除, //这里就不过多赘述了。 //法一:更相减损法 //简单说:大的减小的,直到减数和差相等 int main() { int m = 0; int n = 0; scanf("%d%d", &m, &n); while ((m - n) != 0) { if (m > n) { m=m - n; } else { n=n - m; } } printf("%d", m);//n也行 return 0; }
//法二:穷举法 //从两个数较小的数开始减,直到都能除尽。 int main() { int m = 0; int n = 0; scanf("%d%d", &m, &n); int c = 0; c = ((m) < (n)) ? (m) : (n); for (c; c >= 1; c--) { if ((m % c == 0) && (n % c == 0)) { printf("%d", c); break; } } return 0; }
最后:感谢您的观看!
感谢您的支持!
如果没有关注的话就来个关注吧!你的支持是作者写作的最大动力!
谢谢!!!