80x86 汇编:用辗转相除法求两个数的最大公约数
来源:互联网 发布:多瑞科舆情数据分析站 编辑:程序博客网 时间:2024/06/02 02:24
;用辗转相除法求两个数的最大公约数
;对两个无符号字变量进行初始化,用辗转相除法求他们的最大公约数,
;将结果保存到字变量result中。
;http://zhidao.baidu.com/question/426407800681153052.html
;做而论道编程如下:
DATA SEGMENT
A DW 15750 ;0~65535
B DW 27216 ;0~65535
RESULT DW ?
CRLF DB 0AH, 0DH, '$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV AX, A
CALL DISP
LEA DX, CRLF
MOV AH, 9
INT 21H
MOV AX, B
CALL DISP
LEA DX, CRLF
MOV AH, 9
INT 21H
CALL ZHANZHAUN
MOV AX, RESULT
CALL DISP
EXIT:
MOV AH, 4CH
INT 21H
;---------------------------
ZHANZHAUN PROC NEAR ;辗转相除
MOV AX, A
MOV BX, B
CMP AX, BX
JNB Z_1
MOV B, AX
MOV A, BX
Z_1:MOV AX, A
MOV BX, B
MOV DX, 0
DIV BX
CMP DX, 0
JE Z_E
MOV AX, B
MOV A, AX
MOV B, DX
JMP Z_1
Z_E:MOV RESULT, BX
RET
ZHANZHAUN ENDP
;---------------------------
DISP PROC NEAR
MOV BX, 10
MOV CX, 0
DI1:MOV DX, 0
DIV BX
PUSH DX
INC CX
CMP AX, 0
JNZ DI1
MOV AH, 2
DI2:POP DX
ADD DL, '0'
INT 21H
LOOP DI2
RET
DISP ENDP
;---------------------------
CODE ENDS
END START
;========================================
题目,虽然没有要求显示,但是做而论道也编写了显示的功能部分。
程序执行后,可以显示出来:
15750
27216
126
其中的 126,就是 15750、27216 的最大公约数。
;========================================
用辗转相除法来求两个数最大公约数,人工操作的步骤是:
有两个数字,一般来说,一个大,一个小。
用大数除以小数,然后,首先要看余数。
余数如果为零,那么,商,就是原来两个数的最大公约数。
余数如果不为零,就用余数当作小数,原来的小数当作大数,
再重复做除法的操作。
本操作方法正确性的证明,请参考其它资料。
例如,求 5750 与 27216 的最大公约数。
辗转相除的步骤如下:
27216 / 15750 = 1 ... 11466
15750 / 11466 = 1 ... 4284
11466 / 4284 = 2 ... 2898
4284 / 2898 = 1 ... 1386
2898 / 1386 = 2 ... 126
1386 / 126 = 11... 0
所以,15750 和 27216 的最大公约数就是 126。
;========================================
0 0
- 80x86 汇编:用辗转相除法求两个数的最大公约数
- 用辗转相除法求两个数的最大公约数
- 辗转相除法求两个数最大公约数
- 求两个数的最大公约数:辗转相除法
- 辗转相除法求两个数的最大公约数
- 辗转相除法求两个数的最大公约数
- 辗转相除法求两个数的最大公约数
- 辗转相除法求两个数的最大公约数
- 辗转相除法求两个数的最大公约数
- 辗转相除法求两个数的最大公约数
- 习题:求两个数的最大公约数-辗转相除法
- 辗转相除法求两个数的最大公约数
- 求两个数的最大公约数——辗转相除法
- 辗转相除法 求 两个数的 最大公约数 和 最小公倍数
- 辗转相除法求两个数的最大公约数
- 用辗转相除法求两个数的最大公约数和最小公倍数(什么是辗转相除法,讲解)(C++语言)
- c语言经典题算法1--用辗转相除法求两个数的最大公约数
- C语言 求两个数的最大公约数 (算法)--辗转相减法、辗转相除法
- 80x86 汇编语言编程:EXE2COM
- 80x86 汇编语言编程:数据排序与显示
- ZOJ1042
- C语言编程:求一个回文数
- 51单片机串行接收并显示
- 80x86 汇编:用辗转相除法求两个数的最大公约数
- 80x86 汇编语言:键入字符串,然后存盘
- 数字电子技术--60秒倒计时电路
- 锁相环 CD4046 的应用
- Android程序打包过程
- 一个需要英雄的时代
- 很令人惊奇的单片机程序
- 80x86 汇编语言:猜数游戏
- 将博客搬至CSDN