辗转相除法的算法伪代码如下所示。 步骤1:将较大的数记为a,较小的数记为b。步骤2:用a除以b,得到商q和余数r。 步骤 3: 如果r等于0,则b即为所求的最大公约数。退出。 如果r不等于0,则将b赋值给a,将r赋值给b,然后返回步骤2。根据以上流程图生成N-S图和PAD图
时间: 2024-11-05 12:26:22 浏览: 8
辗转相除法(也称欧几里得算法)是一种古老的求解两个正整数最大公约数(GCD)的方法。以下是基于您提供的描述的算法伪代码:
```
function EuclideanAlgorithm(a, b):
while (b ≠ 0): // 循环直到余数为0
q = a ÷ b // 计算商
r = a % b // 计算余数
a = b // 更新较大的数为原来的余数
b = r // 更新较小的数为新的余数
return a // 当余数为0时,返回b作为最大公约数
// N-S 图(流程图)
N1: 输入 a, b
N2: 若 b = 0,则 GCD = a;结束
N3: 否则
S1: 计算 q, r = a ÷ b, a % b
S2: 更新 a = b, b = r
GOTO N3
E: 结束
// PAD 图(Pseudo-Arithmetic Diagram)
+-----------------+
| N1 |
| +--------------+ |
| | | |
| V V |
+---+-------+--------+
| |
| if b==0 |
V |
+---+-------+--------+
| | | |
| | GCD = a | |
| | | |
+---+---------+-------+
| |
| otherwise |
V |
+---+-------+--------+
| S1 | N2 |
| +--------+--------|
| | | |
| | calc q, r| if b=0 |
| V | V |
+---+-------+--------+
| |
| a = b | GOTO N3|
V V
+---+-------+--------+
| S2 | |
| +--------+--------|
| | | |
| | b = r | |
| V | |
+-----------------+
阅读全文