求最大公约数伪代码
上网查找什么是求两个数的最大公约数的欧几里得算法(辗转相除法),提交算法说明和网上链接
欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。计算公式gcd(a,b) = gcd(b,a mod b)。
#include<stdio.h> unsigned int MaxCommonFactor(int a,int b) { if(a % b == 0) return b; return MaxCommonFactor(b, a % b); } unsigned int Gcd(unsigned int M,unsigned int N) { unsigned int Rem; while(N > 0) { Rem = M % N; M = N; N = Rem; } return M; } int main(void) { int a,b; scanf("%d %d",&a,&b); printf("the greatest common factor of %d and %d is ",a,b); printf("%d\n",Gcd(a,b)); printf("recursion:%d\n",MaxCommonFactor(a,b)); return 0; }
参考https://baike.baidu.com/item/欧几里得算法/1647675
参考教材,用伪代码(英语或汉语)实现欧几里得算法(辗转相除法),提交伪代码
我参考的是书中关于进制转换的伪代码和C语言中辗转相除法的代码
Read num1 Read num2 Set m to max(num1,num2) Set n to min(num1,num2) Set quotient to m REM n While (quotient!=0) Set m to n Set n to quotient Set quotient to m REM n
Write "The answer is",n
选择几组数据,手动走一下伪代码,测试你写的伪代码是否正确,提交测试过程截图
第一组 输入num1=20 num2=30 则n=20,m=30,q=10 q不等于0
m=20 n=10 q=0跳出循环
The answer is 10
第二组
输入num1=28 num2=7
则n=7 m=28 q=0不进入循环
The answer is 7
第三组
输入num1=37 num2=29
则m=37 n=29 q=8
q不等于0
m=29 n=8 q=5
m=8 n=5 q=3
m=5 n=3 q=2
m=3 n=2 q=1
m=2 n=1 q=0跳出循环
The answer is 1
标签:Set,num1,num2,int,代码,unsigned,最大公约数 From: https://www.cnblogs.com/liudi20221408/p/16770643.html