使用 C 语言中的 while 循环找出两个数字的最大公约数
cserver side programmingprogramming
问题
使用 C 编程语言为任意两个数字生成最大公约数。
解决方案
让用户从控制台输入任意两个数字。对于这两个数字,让我们找到最大公约数。
两个数字的最大公约数是可以精确整除它们而无余数的最大数字。
我们用来查找两个数字的最大公约数的逻辑如下 −
while(b!=0) //检查 b=0 条件,因为在 a/b 中,b 不应等于零 { rem=a % b; a=b; b=rem; } 打印 a
程序 1
#include<stdio.h> 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("两个数的最大公约数为:%d
",a); return 0; }
输出
输入任意两个数:8 12 两个数的最大公约数为:4 检查:8= 2 * 2 *2 12= 2 * 2 * 3 两个数的最大公约数是:2 * 2 =4
程序 2
在此示例中,让我们使用 for 循环 − 找到两个数的 GCD
#include <stdio.h> int main(){ int num1, num2, i, GCD; printf("enter two numbers: "); scanf("%d %d", &num1, &num2); for(i=1; i <= num1 && i <= num2; ++i){ if(num1%i==0 && num2%i==0) GCD = i; } printf("两个数的GCD为:%d", GCD); return 0; }
输出
输入两个数:24 48 两个数的GCD为:24