C语言:求输入的两个数的最小公倍数

题目:

输入的两个数最小公倍数

                    

 =========================================================================

                       

思路一:普通方法

(思路简单,效率较低)

总体思路:

(一).

输入两个数: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;
}

实现效果:

猜你喜欢

转载自blog.csdn.net/weixin_63176266/article/details/131276390
今日推荐