用C语言编程:从键盘输入两个正整数,求他们的最大公约数并输出,要求:本题不限制公约数算法,但如果键盘输入数据为0或者负数,要给出错误提示
时间: 2024-12-11 18:34:07 浏览: 4
在C语言中,我们可以利用欧几里得算法(辗转相除法)来计算两个正整数的最大公约数。这个算法基于这样一个事实:对于任意正整数a和b,如果b不为零,则它们的最大公约数等于a除以b的余数c和b的最大公约数。以下是实现这一功能的示例代码:
```c
#include <stdio.h>
// 求最大公约数的函数
int gcd(int a, int b) {
if (b == 0)
return a; // 如果b为0,返回a作为最大公约数
else
return gcd(b, a % b); // 否则递归调用gcd(b, a%b)
}
int main() {
int num1, num2;
printf("请输入两个正整数:");
scanf("%d %d", &num1, &num2);
// 输入验证
if (num1 <= 0 || num2 <= 0) {
printf("错误:输入的数字必须是正整数。\n");
return 1; // 程序退出,因为输入无效
}
// 计算最大公约数并输出结果
int result = gcd(num1, num2);
printf("两数的最大公约数是:%d\n", result);
return 0;
}
```
在这个程序中,用户首先通过`scanf`从键盘输入两个整数,然后检查这两个数是否为正整数。如果不是,程序会打印错误信息并结束。如果输入有效,就调用`gcd`函数来计算最大公约数,并显示结果。
阅读全文