C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)

这篇具有很好参考价值的文章主要介绍了C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目:

从键盘输入两个数两个数最大公约数

                    

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

                       

思路一:普通方法

总体思路:

(一). 生成相关变量

从键盘输入两个数

使用 三目操作符(条件操作符) 找出较小值

               

(二). 使用 while循环

在循环中设置 if条件判断语句

用两数分别 模以 较小值

能整除(没有余数)较小值 就是 最大公约数

不能整除(没有余数)较小值 自减1

直到能整除,此时 较小值 就是 最大公约数

进行打印

                


                 

第一步:

(1). 生成相关变量

int m = 0; -- 接收从键盘输入的第一个数

int n = 0; -- 接收从键盘输入的第二个数

                   

(2). 从键盘输入两个数 -- scanf()函数

           

(3). 使用 三目操作符(条件操作符)找出 较小值 赋给 变量k

int k = (m > n ? n : m);

                     

实现代码:

#include <stdio.h>
int main()
{
	//生成相关变量:
	int m = 0; //接收从键盘输入的第一个数
	int n = 0; //接收从键盘输入的第二个数

	//从键盘输入两个数:
	scanf("%d %d", &m, &n);

	//使用 三目操作符(条件操作符)找出较小值赋给变量k
	int k = (m > n ? n : m); //也可以用if条件判断语句

	return 0;
}

实现图片:

C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)

                 


                 

第二步:

(1). 使用 while循环

             

(2). 在循环中设置 if条件判断语句

用两数分别 模以 较小值

能整除较小值 就是 最大公约数

不能整除较小值 自减1

直到能整除,此时 较小值 就是 最大公约数

进行打印

                     

实现代码:

#include <stdio.h>
int main()
{
	//生成相关变量:
	int m = 0; //接收从键盘输入的第一个数
	int n = 0; //接收从键盘输入的第二个数

	//从键盘输入两个数:
	scanf("%d %d", &m, &n);

	//使用 三目操作符(条件操作符)找出较小值赋给变量k
	int k = (m > n ? n : m); //也可以用if条件判断语句

	//使用while循环:
	while (1) //一直循环,知道找到最大公约数再break跳出循环
	{
		//在循环中设置 if条件判断语句:
		if (m % k ==0 && n % k ==0)//用两数分别 模以 较小值
		{
			//能整除 则 较小值 就是 最大公约数
			break;//break跳出循环后进行打印
		}

		k--;//不能整除则 较小值 自减,再次循环,直到两个数都能被较小值整除
	}

	//进行打印:
	printf("%d\n", k);

	return 0;
}

实现图片:

C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)

                    

思路一:最终代码和实现效果

最终代码:

#include <stdio.h>
int main()
{
	//生成相关变量:
	int m = 0; //接收从键盘输入的第一个数
	int n = 0; //接收从键盘输入的第二个数

	//从键盘输入两个数:
	scanf("%d %d", &m, &n);

	//使用 三目操作符(条件操作符)找出较小值赋给变量k
	int k = (m > n ? n : m); //也可以用if条件判断语句

	//使用while循环:
	while (1) //一直循环,知道找到最大公约数再break跳出循环
	{
		//在循环中设置 if条件判断语句:
		if (m % k ==0 && n % k ==0)//用两数分别 模以 较小值
		{
			//能整除 则 较小值 就是 最大公约数
			break;//break跳出循环后进行打印
		}

		k--;//不能整除则 较小值 自减,再次循环,直到两个数都能被较小值整除
	}

	//进行打印:
	printf("%d\n", k);

	return 0;
}

实现效果:

C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)

                    

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

                       

思路二:辗转相除法

总体思路:

(一). 生成相关变量,从键盘输入两个数

           

(二). 使用while循环 ,配合辗转相除法找出最大公约数

                


              

第一步:

(1). 生成相关变量

int m = 0; -- 接收第一个数

int n = 0; -- 接收第二个数

int k = 0; -- 存放使用辗转相除法后到的余数

              

(2). 从键盘输入两个数 -- scanf()函数

                     

实现代码:

#include <stdio.h>
int main()
{
	//生成相关变量:
	int m = 0; //接收从键盘输入的第一个数
	int n = 0; //接收从键盘输入的第二个数
	int k = 0; //存放使用 辗转相除法 后得到的 余数

	//从键盘输入两个数:
	scanf("%d %d", &m, &n);


	return 0;
}

实现图片:

C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)

                 


                 

第二步:

(1). 使用 while循环配合 辗转相除法 找出最大公约数

                        

(2). 辗转相除法:

第一个数 模以 第二个数 两数位置可调换)得到 余数

余数 不为0,则把 第二个数的值 赋给 第一个数的值余数 赋给 第二个数

继续第一个数(此时是第二个数的值模以 第二个数(此时是余数的值

得到 新的余数

循环这些步骤直到 余数为0 ,此时 第二个数 最大公约数

                     

(3). 打印 第二个数,即最大公约数。

                      

实现代码:

#include <stdio.h>
int main()
{
	//生成相关变量:
	int m = 0; //接收从键盘输入的第一个数
	int n = 0; //接收从键盘输入的第二个数
	int k = 0; //存放使用 辗转相除法 后得到的 余数

	//从键盘输入两个数:
	scanf("%d %d", &m, &n);

	//使用 while循环 ,配合 辗转相除法 找出 最大公约数
	while (k = m % n) 
	//求余数,当余数为0后停止循环,此时,n为最大公约数
	{
		m = n; //第二个数的值 赋给 第一个数
		n = k; //余数 赋给 第二个数

		//赋值后再求余数,直到余数为0
	}

	//打印第二个数,即最大公约数
	printf("%d\n", n);

	return 0;
}

实现图片:

C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)

                    

思路二:最终代码和实现效果

最终代码:

#include <stdio.h>
int main()
{
	//生成相关变量:
	int m = 0; //接收从键盘输入的第一个数
	int n = 0; //接收从键盘输入的第二个数
	int k = 0; //存放使用 辗转相除法 后得到的 余数

	//从键盘输入两个数:
	scanf("%d %d", &m, &n);

	//使用 while循环 ,配合 辗转相除法 找出 最大公约数
	while (k = m % n) 
	//求余数,当余数为0后停止循环,此时,n为最大公约数
	{
		m = n; //第二个数的值 赋给 第一个数
		n = k; //余数 赋给 第二个数

		//赋值后再求余数,直到余数为0
	}

	//打印第二个数,即最大公约数
	printf("%d\n", n);

	return 0;
}

实现效果:

C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)文章来源地址https://www.toymoban.com/news/detail-487287.html

到了这里,关于C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言——输入两个正整数 m 和 n。求其最大公约数和最小公倍数。

    1、首先,程序通过printf函数提示用户输入两个正整数m和n,然后使用scanf函数接收用户的输入并将值分别存储到变量m和n中。 2、接下来,程序进入一个for循环,从1开始遍历直至i等于较小的数(m或n),检查当前数值i是否能同时整除m和n。如果i既能被m整除又能被n整除(即满足

    2024年02月03日
    浏览(45)
  • C语言—最大公约数和最小公倍数

    作者主页: paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者: 大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于 《算法详解》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将算法基础知识一网打尽,希望

    2024年02月13日
    浏览(41)
  • 最大公约数的三种求法——(C语言)

    如何求解最大公约数,首先了解什么是最大公约数, 如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。 例: 在2、4、6中,2就是2,4,6的最

    2024年02月02日
    浏览(54)
  • C语言—求最大公约数(4种算法思路)

    如果大数可以整除小数,那么最大公约数为小数。如果不能整除小数,那么这两个数就按大到小依次对比小数小的数求余,遇到都能够整除的,就是最大公约数。 用a对b求余,若余数为0,则除数b为最大公约数。若余数不为0,将此余数r作为新的除数,b作为新的被除数,重新

    2024年04月13日
    浏览(39)
  • 【C语言】求最大公约数和最小公倍数

    方法一:利用 定义法 求最大公因数和最小公倍数 方法二:最小公倍数求法同上, 最大公约数方法不同 方法一方法二的结果示例如下   方法三:利用 辗转相除法 求最大公约数和最小公倍数 法(1)结果示例如下:  法(2)示例结果如下:  以上就是用C语言循环和循环之前的

    2024年02月07日
    浏览(53)
  • 【C语言】辗转相除法求最大公约数(详解)

    辗转相除法(又称欧几里德算法)是一种用于求解两个整数的最大公约数的方法。本文将使用C语言来实现辗转相除法,并对其原理进行解释。 辗转相除法的原理非常简单。假设有两个整数a和b,其中a b。通过对a除以b求余数,得到余数r1。然后把b除以r1求余数,得到余数r2。如

    2024年02月07日
    浏览(54)
  • C语言入门——求最大公约数(2种方法超详细)

    基本介绍: 最大公约数(greatest common divisor,简写为 gcd ;或highest common factor,简写为hcf),指某几个整数共有因子中最大的一个。 最大公约数 能够整除一个整数的整数称为其的约数(如5是10约数); 能够被一个整数整除的整数称为其的倍数(如10是5的倍数); 如果一个数既

    2024年02月08日
    浏览(101)
  • 【c语言】—求最大公约数和最小公倍数多种方法

    目录 一.求最大公约数 1.枚举法求最大公约数 2.辗转相除法 二.求最小公倍数 1.枚举法求最小公倍数 2.简易法 3.公式法 思路:先求两个数中的最小值,最大公约数不可能大于两个数的最小数 比如6和18,最大公约数就是6 再如3和9,最大公约数就是3 然后再从1开始循环遍历到最小

    2024年02月08日
    浏览(59)
  • C语言经典算法之Euclidean算法求最大公约数

    目录 前言 A.建议 B.简介 一 代码实现 二 时空复杂度 A.循环实现 a.时间复杂度(Time Complexity): b.空间复杂度(Space Complexity): B.递归实现 a.时间复杂度(Time Complexity): b.空间复杂度(Space Complexity): 三 优缺点 A.循环实现 a.优点: b.缺点: c.总结: B.递归实现 a.优点:

    2024年03月26日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包