1.算法:欧几里得算法(辗转相除法)
由百度百科,算法为:以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数。
百度百科连接:https://baike.baidu.com/item/欧几里得算法/1647675
2.伪代码
好像空格在行首没效果,就用。。充当空格了。
Write "请输入两个数(前大后小):"
Read num1
Read num2
While(a is not zero)
。。Set a to num1 % num2
。。Set num1 to num2
。。Set num2 to a
Print"num1"
3.伪代码测试
我分别测试了求72和48的最大公约数和求93和37的最大公约数,如下图所示。
4.C语言程序
稍微改动了一下,使得两个数字没有顺序要求。
代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num1,num2,c,a=1;
printf("请输入两个正整数:");
scanf("%d %d",&num1,&num2);
if(num1<num2){
c=num1,num1=num2,num2=c;
}
while (a!=0){
a=num1%num2;
num1=num2;
num2=a;
}
printf("最大公约数为:%d\n",num1);
return 0;
}
运行结果: