求最大公约数伪代码
求最大公约数伪代码
上网查找什么是求两个数的最大公约数的欧几里得算法(辗转相除法),提交算法说明和网上链接
欧几里得算法又称辗转相除法,是指用于计算两个非负整数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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现