任务描述
本关任务:设计函数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 <stdlib.h>
int MaxCommonFactor(int a, int b);
int main()
{
int a, b;
scanf("%d", &a);
getchar();
scanf("%d", &b);
printf("Input two positive integers,a,b:\n");
if (a <= 0 || b <= 0)
{
printf("Input error!\n");
return 0;
}
printf("MaxCommonFactor = %d\n", MaxCommonFactor(a, b));
return 0;
}
int MaxCommonFactor(int a, int b)
{
if (a < b)
{
int tmp = b;
b = a;
a = tmp;
}
return (b, a % b);
}