求任意两个整数的最大公约数,数学中通过辗转相除法来计算,设计这个程序也是相同的道理,代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a, b;
int c = 0;
printf("请输入任意两个整数:\n");
scanf("%d%d", &a, &b);
do
{
c = a%b;//a除以b的余数
a = b;//b的值赋给a
b = c;//将余数赋给b
} while (b != 0);
printf("这两个数的最大公约数是:%d\n", a);
return 0;
}
上面所示代码循环体还可以在优化一下,如:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a, b;
int c = 0;
printf("请输入任意两个整数:\n");
scanf("%d%d", &a, &b);
//C语言中0为假,非0为真
while (c = a%b)//a除以b的余数赋给c,余数为0时不进入或结束循环
{
a = b;
b = c;
}
printf("这两个数的最大公约数是:%d\n", b);
return 0;
}