任务描述
设计函数RecurMaxCommonFactor(),实现递归求解两个正整数的最大公约数。
相关知识
最大公约数可用如下三个性质实现:
性质1 如果a>b,则a和b的最大公约数与a-b和b的最大公约数相同;
性质2 如果a<b,则a和b的最大公约数与a和b-a的最大公约数形同;
性质3 如果a=b,则a和b的最大公约数与a值或b值相同。
编程要求
根据提示,在右侧编辑器补充递归函数RecurMaxCommonFactor(),在main函数中输入两个正整数,调用所写的函数计算出最大公约数并输出。
测试说明
测试样例1:
测试样例2:
测试样例3:
其中:
黑色字体为输出内容;
红色字体为输入内容;
所有标点符号均为英文标点。
#include <stdio.h>
#include <stdlib.h>
int MaxCommonFactor(int a, int b);
int main()
{
int a,b,y;
printf("Input two positive integers,a,b:\n");
scanf("%d,%d",&a, &b);
if(a<=0 || b<=0)
{
printf("Input error!");
}
else
{
y = MaxCommonFactor(a,b);
printf("MaxCommonFactor = %d",y);
}
return 0;
}
//计算a 与 b 的最大公约数并返回
int MaxCommonFactor(int a, int b)
{
if(a == b)
return a;
else if(a>b)
return MaxCommonFactor(a - b, b);
else
return MaxCommonFactor(a, b - a);
}