求任意两个整数的最大公约数,数学中通过辗转相除法来计算,设计这个程序也是相同的道理,代码如下:
#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; }