c语言编程求两个整数的最大公约数(两种方法)

第一种(for循环)

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i, min, k, a, b;
    printf("请输入两个整数:\n");
    scanf("%d%d", &a, &b);
    if (a>b)//此处if   else语句可以删除(只是为了少执行几步程序)
        min = b;
    else
        min = a;
    for (i = min; i>0; i--)//如果删了上面的if  else这要改为i=a或b
    {
        if ((a%i == 0) && (b%i == 0))//判断两个同时取余为0
        {
            k = i;
            printf("%d", k); break;
        }
    }
    return 0;
}

第二种方法(while循环)

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int tmp, a, b;
    printf("请输入两个整数:\n");
    scanf("%d%d", &a, &b);
    while (a%b != 0)
    {
        tmp=a%b;//取余
        a = b;//交换a,b可避免a比b小
        b = tmp;
    }
    printf("%d\n",b);
    return 0;
}

原文地址:https://blog.51cto.com/14233078/2366221

时间: 2024-08-25 21:35:32

c语言编程求两个整数的最大公约数(两种方法)的相关文章

求两个整数的最大公约数

<C和指针>第7章第2道编程题: 两个整型值M和N(M.N均大于0)的最大公约数可以按照下面的方法计算: 请编写一个名叫gcd的函数,它接受两个整型参数,并返回这两个数的最大公约数.如果这两个参数中的任何一个不大于零,函数返回零. 1 /* 2 ** 求两个整数的最大公约数 3 */ 4 5 #include <stdio.h> 6 7 int gcd( int M, int N ); 8 9 int 10 main() 11 { 12 int m, n; 13 scanf( &q

求两个整数的最大公约数和最小公倍数

//求最大公约数是用辗转相除法,最小公倍数是根据公式 m,n 的 最大公约数* m,n最小公倍数 = m*n 来计算 #include<stdio.h> //将两个整数升序排列 void ascNum(int *p1,int *p2) { int temp; if(*p1 > *p2) { temp = *p2; *p2 = *p1; *p1 = temp; } } //求两个整数的最大公约数 辗转相除法 int getAppr(int a, int b) { int c; ascNum

002:求两个整数的最大公约数和最小公倍数

求最大公约数可采用辗转相除法,其流程如图所示. 最小公倍数就是两个整数的乘积除以其最大公约数. 1 #include <stdio.h> 2 3 int main() 4 { 5 unsigned long a, b, c=0; //两个整数和临时变量 6 unsigned long lcm=0, gcd=0; //最小公倍数和最大公约数 7 8 while( 1 ) 9 { 10 printf("Please input two positive integers(spacebar

php取两个整数的最大公约数算法大全

php计算两个整数的最大公约数常用算法 <?php//计时,返回秒function microtime_float (){ list( $usec , $sec ) = explode ( " " , microtime ()); return ((float) $usec + (float) $sec );}////////////////////////////////////////////欧几里得算法function ojld($m, $n) { if($m ==0 &a

《Advanced Bash-scripting Guide》学习(十九):两个整数的最大公约数

本文所选的例子来自于<Advanced Bash-scripting Gudie>一书,译者 杨春敏 黄毅 1 #!/bin/bash 2 #求两个整数的最大公约数 3 4 E_BADARGS=65 5 6 #如果参数个数不为2,以参数错误退出 7 if [ $# -ne 2 ] 8 then 9 echo "Usage: `basename $0` first-number second-number" 10 exit $E_BADARGS 11 fi 12 13 #如果

C语言求两个整数的最大公约数

------------------------------------------------------------------------------------------------------ 最大公约数(又叫最大公因数):指两个或者多个整数共有约数中最大的一个.求最大公约数有多种方法,常见的有质因数分解法.短除法.辗转相除法.更相减损法.在这里本人建议使用后两种方法实现. -------------------------------------------------------

C语言编程 求两个数的平均值方法(三种方法)

第一种方法是最常见的average=(a + b) / 2这种方式,求两个数的平均值 第二种方法是当 a<b 时averag=a+(b-a)/2 这里着重介绍的是第三种方法 average=(a&b) + (a^b)>>1 推导过程如下a + b = (a&b) 2 + (a^b)) --->average=((a&b)2+(a^b))/2 ---->average=(a&b) + (a^b)>>1 eg:两个数为15和515二进制

C++求两个整数的最大公约数和最小公倍数

最小公倍数=两个整数的成绩 / 最大公约数 求最大公约数的方法: (1)辗转相除法 1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int a,b,tmp,m; 6 cin>>a>>b; 7 m=a*b; 8 if(a<b) 9 { 10 tmp=b; 11 b=a; 12 a=tmp; 13 } 14 while(b!=0) 15 { 16 tmp=a%b; 17 a=b; 18 b

java 两个整数相除保留两位小数

java中,当两个整数相除时,由于小数点以后的数字会被截断,运算结果将为整数,此时若希望得到运算结果为浮点数,必须将两整数其一或是两者都强制转换为浮点数. 例如: (float)a/b // 将整数其中一个强制转换为浮点数,再与另一个整数相除 a/(float)b (float)a/(float)b // 将两个整数同时强制转换为浮点数后再相除 float num= (float)2/3; DecimalFormat df = new DecimalFormat("0.00");//格