本帖最后由 风过无痕1989 于 2020-12-27 00:55 编辑 // 求最大公约数 greatest common divisor
#include<stdio.h>
main()
{
int gcd(int *a, int *b); // 函数名就取三个英文单词的第一个字母好了(当然可以用其他的函数名)
int a, b, temp; // 声明函数放前面,此条语句移下来(不是因为其他,只是习惯上这么做)
printf("请输入两个正整数:\n");
scanf("%d%d", &a, &b); // 除控制符外,不要添加其他的符号
if (a == b)
printf("最大公约数为%d", a);
else if (a < b) // 此处已经是交换了,最大值就是 a
{
temp = a;
a = b;
b = temp;
temp = gcd(&a, &b); // 使用函数要传地址,否则函数使用完了,数据也就自动消失了
printf("greatest common divisor is %d\n", temp);
}
}
int gcd(int *a, int *b) // 碾转相除法
{
int x = 1; // x 不等于0就行,确保循环能进行即可
while (x != 0)
{
x = *a % *b; // 相数相除,取余数
*a = *b; // 除数作被除数
*b = x; // 余数作除数,循环,直到 x = 0
}
return *a;
}
|