使用 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

相关文章