题目:
求输入的两个数的最小公倍数
=========================================================================
思路一:普通方法
(思路简单,效率较低)
总体思路:
(一).
输入两个数:a 和 b,
使用 三目表达式 把较大值 取出
(二).
使用 while循环 ,
循环判断 较大值 能否同时整除两个数,
能整除,说明 较大值 就是两值的最大公倍数,跳出循环,
不能整除则 较大值++,直到能同时整除两个值跳出循环,
进行打印
第一步:
(1). 输入两个数:a 和 b
(2). 使用 三目表达式 把较大值取出
实现代码:
#include <stdio.h> int main() { //输入两个数: long long a = 0; long long b = 0; //输入: scanf("%lld %lld", &a, &b); //使用 三目表达式 ,把较大值取出 //假设 a 和 b 的较大值是最小公倍数 long long m = a > b ? a : b; //较大值赋给 m return 0; }
实现图片:
第二步:
(1). 使用 while循环,循环判断 较大值 能否同时整除两个数
(2). 在 while循环中,使用 if条件判断 判断 较大值能否同时整除两个数,
能整除,说明较大值就是两值的最大公倍数,跳出循环,
不能整除,则 较大值++,直到能同时整除两个值,跳出循环,
进行打印
实现代码:
#include <stdio.h> int main() { //输入两个数: long long a = 0; long long b = 0; //输入: scanf("%lld %lld", &a, &b); //使用 三目表达式 ,把较大值取出 //假设 a 和 b 的较大值是最小公倍数 long long m = a > b ? a : b; //较大值赋给 m //使用 while循环, //循环判断 较大值 能否同时整除两个数 while (1) //死循环,等满足用break跳出循环 { //使用 if条件判断 : if (m % a == 0 && m % b == 0) //看 较大值 能否同时整除两个数 { //能整除,跳出循环 break; } //不能整除,较大值++,直到能整除两个值 m++; } //打印: printf("%lld\n", m); return 0; }
实现图片:
思路一:最终代码和实现效果
最终代码:
#include <stdio.h> int main() { //输入两个数: long long a = 0; long long b = 0; //输入: scanf("%lld %lld", &a, &b); //使用 三目表达式 ,把较大值取出 //假设 a 和 b 的较大值是最小公倍数 long long m = a > b ? a : b; //较大值赋给 m //使用 while循环, //循环判断 较大值 能否同时整除两个数 while (1) //死循环,等满足用break跳出循环 { //使用 if条件判断 : if (m % a == 0 && m % b == 0) //看 较大值 能否同时整除两个数 { //能整除,跳出循环 break; } //不能整除,较大值++,直到能整除两个值 m++; } //打印: printf("%lld\n", m); return 0; }
实现效果:
=========================================================================
思路二:a * i % b
(使用方法,效率更高)
总体思路:
(一).
输入两个数:a 和 b
(二).
求 a 和 b 的最小公倍数:
假设两值的最小公倍数是 k ,有 i = 1,
让 a * i % b 看能不能整除(余数等于0)
能整除,最小公倍数是 k = a * i
不能整除,则 i++,
直到能整除为止,此时最小公倍数 k = a * i
第一步:
输入两个数:a 和 b
实现代码:
#include <stdio.h> int main() { //输入两个数: long long a = 0; long long b = 0; //输入: scanf("%lld %lld", &a, &b); return 0; }
实现图片:
第二步:
使用 while循环,判断 a * i % b 能否整除
能整除,最小公倍数是 k = a * i ,进行打印
不能整除,则 i++
直到能整除为止,此时最小公倍数 k = a * i
实现代码:
#include <stdio.h> int main() { //输入两个数: long long a = 0; long long b = 0; //输入: scanf("%lld %lld", &a, &b); //求最小公倍数: int i = 1; //a的倍数 while (a * i % b != 0)//这里 !=0 可以省略 // a * i 不能整除 b,则改变 i,即a的倍数, //直到可以整除退出循环 { i++;//不能整除则 i++ } //直到能整除为止,此时最小公倍数 k = a * i printf("%lld\n", a * i); return 0; }
实现图片:
思路二:最终代码和实现效果
最终代码:
#include <stdio.h> int main() { //输入两个数: long long a = 0; long long b = 0; //输入: scanf("%lld %lld", &a, &b); //求最小公倍数: int i = 1; //a的倍数 while (a * i % b != 0)//这里 !=0 可以省略 // a * i 不能整除 b,则改变 i,即a的倍数, //直到可以整除退出循环 { i++;//不能整除则 i++ } //直到能整除为止,此时最小公倍数 k = a * i printf("%lld\n", a * i); return 0; }
实现效果: