S9T9大都只给公式,然后说了一大堆因为

部署运行你感兴趣的模型镜像

来源:S9T9大都只给公式,然后说了一大堆因为

本人S9t9菜鸟一枚,上午在看书的时候突然看到了求最大公约数的一个例题,突然就想到以前好像看过一个欧几里得算法,故又上网仔细找了一下欧几里得算法的原理。可能是本人时间长没看算法,脑子都生锈了。
看了几个讲解S欧几里得算法的文章,S9T9大都只给公式,然后说了一大堆因为、、、、在我还没看懂的时候,突然来了个所以、、、然后公式就这样推出来的。⊙﹏⊙b汗!
经过我这令人捉急的小脑袋转了半天,最后有了点眉目,所以拿出来和大家分享一下!
1.首先说一下:欧几里得算法是求两个数的最大公约数的,你可能会问:什么是最大公约数?(⊙﹏⊙我在一开始看到这个问题的时候,我就突然脑子短路,竟然不知道最大公约数是什么了)
最大公约数:即能够同时被两个数整除的那个最大的数。例如:8是16和8的公约数,因为16%8和8%8都等于零嘛!但4也是啊!所以两个数的公约数会有很多,但我们要找出那个最大的!

2.让我们来使用算式分析一下,假设求x和y的最大公约数。a).先假设x>y,x和y的最大公约数用f(x,y)表示
b).假设   x/y = a;
             x%y = b;
    所以:a*y + b = x   
                (这个应该能看出来,因为a为x除以y的整数部分,b为x除以y的余数部分,所以a*y + b = x)
   将上面那个式子调换一下位置得到:b = x – a*y;
                因为x和y都能够被f(x,y)整除    -----因为f(x,y)是x和y的最大公约数嘛
                所以 b 也能够被f(x,y)整除      -----即x和y的最大公约数f(x,y),它也是b的约数,所以求x和y的最大公约数也就相当于求y和b的最大公约数。(你可能会问,为什么本来求x和y的最大公约数,最后转了半天变成了求y的b的公约数了?因为 y < x嘛,而且x%y肯定也小于y,所以,这样一来,我们就把求最大公约数的范围缩小了啊)
所以、欧几里得的公式也就是这么来的f(x,y) = f(y,x%y);
所以这个算法的实现也就是不停的迭代,直到找出了x%y等于0时,则停止迭代,那个时候最大公约数也就是y了(因为x%y都等于0了,所以x和y的最大公约数也就是y本身了)。

3.上面可能说得有点啰嗦了,大家莫怪,本人也是想讲得更清楚嘛!下面直接附上代码实现部分:

public static int gcd(int x, int y){
        //防止输入为0,导致程序出错      
        if(x == 0 || y == 0){return 0;}      
        //添加一个判断保证x > y      
        if(x < y){      
            int temp = x;      
            temp = y;      
            y = x;      
        }      
        //算法实现      
        if(x%y == 0){      
            return y;      
        }else      
        {      
            return gcd(y,x%y);      
        }      
    }

其实还有好多其它的优秀的算法,在这里就先不提了,毕竟欧几里得算法就挺高效的。在有些公司,这道题还作为笔试题出现过呢,所以,即将毕业去找工作的未来程序员,还是应该好好看一下的!O(∩_∩)O哈哈~



您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>我们正在讨论的是关于矩阵键盘扫描代码中的S6-S9按键定义。根据用户之前的上下文,这些按键在GTXTX-1C开发板的矩阵键盘布局中,分别对应第列(COL1)的四个按键(从ROW1到ROW4)。用户特别询问S6-S9在代码中的含义,并澄清它们是否是行内容。回顾之前的回答:S6:ROW1-COL1->&#39;1&#39;S7:ROW2-COL1->&#39;4&#39;S8:ROW3-COL1->&#39;7&#39;S9:ROW4-COL1->&#39;*&#39;用户现在问:S6到S9在代码中代表什么,且它们是行的含义。注意:这里的“行”可能有两种理解:1.在硬件连接上,它们都属于同列(COL1)的不同行,因此可以它们在矩阵的同列上,但不同行。2.在代码扫描过程中,它们是在扫描同列(COL1)时被检测的。但是,用户“它们是行”,而实际上它们是同列的不同行。因此需要澄清:在矩阵键盘中,通常将同行(同根行线)上的按键称为行,而同列(同根列线)上的按键称为列。然而,在用户的问题中,S6-S9被描述为“行内容”,这可能是误解。实际上,S6-S9是同列(COL1)的四个按键,分别位于第1行、第2行、第3行、第4行。因此,回答应明确:-S6-S9在代码中分别代表数字键1、4、7和删除键(*)。-它们不是同行(ROW)的按键,而是同列(COL1)的按键。所以它们分布在四行(ROW1到ROW4)上,但都属于第列(COL1)。另外,注意用户引用了多个不相关的引用(引用[1]到[5]),但这些引用与矩阵键盘无关。我们应忽略这些引用,因为用户已经明这些引用不是真正的需求,并让我们参考上次的问题和回答。因此,我们只基于之前关于矩阵键盘的代码解释来回答。回答结构:1.重申S6-S9在代码中的键值定义。2.解释它们在矩阵中的位置(同列,不同行)。3.明为什么它们会被起提及(因为在扫描第列时,会依次检查这四行的状态)。4.如果有必要,可以再次给出扫描代码片段。注意:用户可能混淆了“行”和“列”的概念,需要澄清。同时,生成相关问题。</think>### S6-S9在代码中的含义及"行"概念解析 根据您提供的代码上下文,S6-S9代表矩阵键盘中**第列(COL1)的不同行按键**,它们属于同列但分布在不同行上,具体含义如下: | 按键 | 矩阵位置 | 代码键值 | 功能 | 硬件连接明 | |------|---------------|----------|------------|-----------------------------| | S6 | **ROW1-COL1** | `&#39;1&#39;` | 数字键1 | 第行第列按键 (P3.0&P3.4) | | S7 | **ROW2-COL1** | `&#39;4&#39;` | 数字键4 | 第二行第列按键 (P3.1&P3.4) | | S8 | **ROW3-COL1** | `&#39;7&#39;` | 数字键7 | 第三行第列按键 (P3.2&P3.4) | | S9 | **ROW4-COL1** | `&#39;*&#39;` | 删除键 | 第四行第列按键 (P3.3&P3.4) | #### "属于同列"的含义: 1. **扫描逻辑共性** 在逐列扫描算法中,这些按键共享相同的列扫描代码段: ```c COL1 = 0; COL2 = 1; COL3 = 1; COL4 = 1; // 激活COL1 if(!ROW1) keyValue = &#39;1&#39;; // S6 if(!ROW2) keyValue = &#39;4&#39;; // S7 if(!ROW3) keyValue = &#39;7&#39;; // S8 if(!ROW4) keyValue = &#39;*&#39;; // S9 ``` 当扫描第列时,程序会**顺序检测所有行线**,因此它们在代码处理流程上具有连续性。 2. **硬件连接共性** - 共用列线 `COL1`(P3.4端口) - 分别连接不同行线(ROW1-ROW4) - 物理位置在开发板上通常呈**纵向排列** #### 功能差异明: 虽然同属列,但功能完全独立: - S6/S7/S8 是数字输入键 - S9 是特殊功能键(删除操作): ```c else if(key == &#39;*&#39;) { // S9专属处理 if(inputCount > 0) inputCount--; // 删除最后位 beep(50); // 提示音 } ``` > 硬件验证提示:若按键响应异常,请用万用表检测COL1(P3.4)到各行线的通断状态[^1]。 ### 常见误解澄清 - ❌ 错误理解:S6-S9是同行的按键 ✅ 正确理解:它们是**同列的不同行按键** - ❌ 错误理解:共享相同键值处理逻辑 ✅ 正确理解:每个按键有独立的键值定义和处理分支
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值