欧几里得算法(辗转相除法)---- 算两个正整数的最大公因数
#include<stdio.h>
int main() {
void transformation(int *numberOne, int *numberTwo);
printf("进行编制**************************\n");
int number1, number2, numberOne, numberTwo, i, m = 0;
printf("请输入第一个正整数:\n");
scanf("%d", &numberOne);
printf("请输入第二个正整数:\n");
scanf("%d", &numberTwo);
number1 = numberOne;
number2 = numberTwo;
if(numberOne < numberTwo) {
transformation(&numberOne, &numberTwo);
}
while(numberTwo > 1) {
if(numberOne % numberTwo == 0) {
printf("最大公因数为:%d\n", numberTwo);
m = 1;
break;
} else {
numberOne = numberOne % numberTwo;
transformation(&numberOne, &numberTwo);
}
}
if(m == 0) {
printf("%d和%d没有最大公因数。\n", number1, number2);
}
}
void transformation(int *numberOne, int *numberTwo) {
*numberOne = *numberOne + *numberTwo;
*numberTwo = *numberOne - *numberTwo;
*numberOne = *numberOne - *numberTwo;
}
结果