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

news2024/10/5 14:07:42

题目:

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

                    

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

                       

思路一:普通方法

总体思路:

(一). 生成相关变量

从键盘输入两个数

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

               

(二). 使用 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;
}

实现图片:

                 


                 

第二步:

(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;
}

实现图片:

                    

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

最终代码:

#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;
}

实现效果:

                    

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

                       

思路二:辗转相除法

总体思路:

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

           

(二). 使用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;
}

实现图片:

                 


                 

第二步:

(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;
}

实现图片:

                    

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

最终代码:

#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;
}

实现效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/633647.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树——“数据结构与算法”

各位CSDN的uu们好久不见呀&#xff0c;好久没有更新我的数据结构与算法专栏啦&#xff0c;现在&#xff0c;我要开始重拾丢下的知识啦&#xff0c;这次&#xff0c;小雅兰要给uu们介绍一个全新的数据结构&#xff0c;下面&#xff0c;就让我们进入树的世界吧&#xff01;&#…

Flutter 环境配置

Flutter 环境配置 电脑上面安装配置JDK 1.下载安装JDK 下载地址&#xff1a;https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) 2.配置JDK 2.1、系统变量 里面新增JAVA_HOME&#xff0c;设置值为java sdk 根目录&#xff1a; 2.2 …

OpenGl之纹理坐标及纹理映射

文章目录 纹理坐标纹理映射代码 纹理坐标 为了实现纹理贴图我们需要做三件事&#xff1a;将一张贴图加载到OpenGL中&#xff0c;提供纹理坐标和顶点&#xff08;将纹理对应匹配到顶点上&#xff09;&#xff0c;并使用纹理坐标从纹理中进行取样操作取得像素颜色。由于三角形会被…

Vue源码解析--更新中

【尚硅谷】Vue源码解析之虚拟DOM和diff算法 【Vue源码】图解 diff算法 与 虚拟DOM-snabbdom-最小量更新原理解析-手写源码-updateChildren] 文章目录 2. snabbdom 简介 及 准备工作2.1 简介2.2 搭建初始环境1. 安装snabbdom2. 安装webpack5并配置3. 复制官方demo Example 3. …

如何把歌曲里的伴奏音乐提取出来,分享几个方法给大家!

对于一首歌&#xff0c;我们都知道&#xff0c;它有两部分组成&#xff1a;背景音乐人声。这两者合在一起&#xff0c;便是我们经常听的歌。部分用户想要直接获取歌曲伴奏&#xff0c;那么可以在UU伴奏网上下载。 操作方法比较简单&#xff0c;直接搜索想要的歌曲名称就可以了…

【分布式系统与一致性协议】

分布式系统与一致性协议 CAP原理APCPCA总结BASE理论 一致性拜占庭将军问题 分布式系统是一个硬件或软件组件分布在不同的网络计算机上&#xff0c;彼此之间仅仅通过消息传递进行通信和协调的系统。 分布式系统的设计目标一般包含如下&#xff1a; 可用性&#xff1a;可用性是分…

C++14中binary literals的使用

一个形如42的值被称作字面值常量(literal),这样的值一望而知。每个字面值常量都对应一种数据类型&#xff0c;字面值常量的形式和值决定了它的数据类型。 我们可以将整型字面值写作十进制(基数为10)、八进制(基数为8)或十六进制(基数为16)数的形式。以0开头的整数代表八进制数&…

Dijkstra算法求最短路

Dijkstra算法是单源最短路算法&#xff0c;是用来求一个点到其他所有点点最短距离&#xff0c;使用小根堆优化后时间复杂度大概为 O m l o g n Omlogn Omlogn 注意&#xff1a;不可以解决存在负权边的问题 【模板】单源最短路径&#xff08;标准版&#xff09; 链接&#xff1…

使用CRM系统通过四点快速收集客户信息

CRM是客户关系管理的缩写&#xff0c;它可以帮助企业管理销售、营销和客户服务&#xff0c;提升管理能力&#xff0c;获得更多收益。 那么&#xff0c;在CRM系统中客户是什么&#xff1f;如何快速收集客户信息呢&#xff1f;下面我们来说一说。 一、CRM中的客户是什么&#xf…

Java012——String引用数据类型的简单学习

回顾Java数据类型 本次要学习的是Java引用数据类型String 一、对String类简单说明 说明&#xff1a;String是Java中的一个类 二、String类的作用 作用&#xff1a;主要用来创建和操作字符串。 三、使用String类 3.1、创建字符串 注意&#xff1a; 1、字符串使用双引号&qu…

shell脚本:文本三剑客awk

awk-命令讲解&#xff1a; awk-命令讲解 一、awk&#xff1a;1.定义&#xff1a;2.格式&#xff1a;3.工作过程&#xff1a;4.工作原理&#xff1a;5.常用选项&#xff1a; 二、内置函数&#xff1a;1.getline的工作过程&#xff1a;2.打印&#xff1a;3.文件内容匹配过滤打印…

软考A计划-系统架构师-学习笔记-第四弹

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

信道编码的基本概念

本专栏包含信息论与编码的核心知识&#xff0c;按知识点组织&#xff0c;可作为教学或学习的参考。markdown版本已归档至【Github仓库&#xff1a;https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。 文章目录 信道编码信道编码的…

[迁移学习]预训练和微调

一、概述 一般的有监督迁移学习分为以下三种&#xff1a; ①将训练好的模型作为特征抽取模块&#xff08;例如以resnet进行特征提取&#xff09; ②在一个相关的任务中训练后直接后直接使用(例如gpt) ③在训练好的模型基础上进行微调 此外还有无监督学习的方式 zero-shot&#…

jmeter004:察看结果树

元件添加路径&#xff1a;线程组>监听器>察看结果树 取样器结果&#xff1a; ps&#xff1a;取样器是可以显示变量所对应的值的 Thread Name&#xff1a;线程组名称 Sample Start&#xff1a;运行的开始时间 Load time&#xff1a;加载的时间、持续的时间 Connect Time&a…

从零玩转系列之微信支付开篇

一、前言 halo各位大佬很久没更新了最近在搞微信支付,因商户号审核了我半个月和小程序认证也找了资料并且将商户号和小程序进行关联,至此微信支付Native支付完成.此篇文章过长我将分几个阶段的文章发布(项目源码都有,小程序和PC端) 二、演示 微信支付Native案例 微信支付JSAPI案…

【MySQL】数据表的基本操作

目录 1. 创建表 2. 创建表案例 2.1 创建一个users表 2.2 查看表结构 2.3 修改表 3. 删除表 MySQL&#x1f337; 1. 创建表 语法&#xff1a; CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype ) character set 字符集 collate 校验规则 engine 存储…

Blogger空闲短域名搜索代码

Blogger是一个由Google提供的&#xff08;收购的公司&#xff09;免费博客平台&#xff0c;旨在使个人博客创建变得容易。用户可以使用Blogger创建自己的博客并将其托管在Google的服务器上。它不需要任何费用&#xff0c;并提供简单易用的编辑器和主题来帮助用户轻松地创建博客…

网络安全学术顶会——SP 2023 议题清单、摘要与总结(下)

注&#xff1a;本文由ChatGPT与Claude联合生成 121、QueryX: Symbolic Query on Decompiled Code for Finding Bugs in COTS Binaries 可扩展的静态检查工具&#xff0c;如Sys和CodeQL&#xff0c;成功地发现了源代码中的错误。这些工具允许分析人员编写应用程序特定的规则&…

虚拟机角度下的线程

虚拟机角度下的线程 jvm与线程 一个 Java 应用程序通常只包含一个 JVM 进程&#xff08;Java Virtual Machine&#xff0c;Java虚拟机&#xff09;&#xff0c;但在某些情况下可能会有多个 JVM 进程。 一个 Java 应用通常是一个进程&#xff0c;这个进程就是jvm&#xff0c;编…