文章
230
粉丝
165
获赞
374
访问
113.7k
#include <stdio.h>
// 过程化封装:手动实现辗转相除法(含分步输出),禁止调用内置gcd函数
int gcd(int a, int b) {
// 步骤1:确保a >= b,若a < b则交换并标注第一步的计算
int original_a = a, original_b = b;
if (a < b) {
int temp = a;
a = b;
b = temp;
}
// 步骤2:显式实现辗转相除循环,逐行输出过程
while (b != 0) {
int quotient = a / b; // 商
int remainder = a % b; // 余数
printf("%d = %d * %d + %d\n", a, b, quotient, remainder);
// 更新a和b,进入下一轮计算
a = b;
b = remainder;
}
// 返回最终的最大公约数
return a;
}
int main() {
int num1, num2;
// 读取输入的两个整数
if (scanf("%d %d", &num1, &num2) != 2) {
printf("Input error!\n");
return 0;
}
// 输入合法性校验:必须均为正整数
if (num1 <= 0 || num2 <= 0) {
printf("Input error!\n");
return 0;
}
// 调用gcd函数(手动实现逻辑,无内置函数)
int result = gcd(num1, num2);
// 输出最终结果
printf("GCD = %d\n", result);
...
登录后发布评论
暂无评论,来抢沙发