C语言用while循环求两个数的GCD
问题
使用C编程语言生成任意两个数的最大公约数。
解决方案
让用户从控制台输入任意两个数字。对于这两个数字,让我们找到最大公约数。
两个数的GCD是将它们完全整除而没有余数的最大数。
我们用来找到两个数字的GCD的逻辑如下 -
while(b!=0) //检查b=0条件,因为在a/b中,b不应等于零 { rem=a % b; a=b; b=rem; } Print a
方案一
#include输出结果int main(){ int a,b,rem; printf("输入任意两个数字:"); scanf("%d%d",&a,&b); while(b!=0) //检查b=0条件,因为在a/b中,b不应等于零{ rem=a % b; a=b; b=rem; } printf("GCD of two numbers is:%d\n",a); return 0; }
输入任意两个数字:8 12 GCD of two numbers is:4 Check: 8= 2 * 2 *2 12= 2 * 2 * 3 The Greatest common divisor of two numbers is : 2 * 2 =4
方案二
在这个例子中,让我们使用for循环找到两个数字的GCD-
#include输出结果int main(){ int num1, num2, i, GCD; printf("输入两个数字: "); scanf("%d %d", &num1, &num2); for(i=1; i <= num1 && i <= num2; ++i){ if(num1%i==0 && num2%i==0) GCD = i; } printf("GCD of two numbers is:%d", GCD); return 0; }
输入两个数字: 24 48 GCD of two numbers is:24