• 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输人


    写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输人

    题目解析:

    该题直接使用“辗转相除法”来求解最大公约数和最小公倍数

    最大公约数找出两数中的最小值,然后直接相模,当能够同时被两数整除时,则为最大公约数。

    最小公倍数找出两数中的最大值,然后直接进入死循环,直到找到一个数能够同时被两数整除时,则为最小公倍数

    【注】此题还有一些比较高级的解法,比如求最大公约数的相减法、欧几里德辗转相除法等,有兴趣的同学可以查询相关资料

    代码示例:

    #include<stdio.h>
    
    //最大公约数
    size_t GCD(size_t a, size_t b)
    {      
    	
    	size_t gcd;      
    	gcd = a > b ? b : a;
    	while(gcd > 1)  
    	{
    		if((a % gcd == 0) && (b % gcd == 0))   
    			return gcd; 
    		gcd--; 
    	}
    	return gcd;
    }
    
    //最小公倍数
    size_t LCM(size_t a, size_t b)
    {
    	size_t lcm;
    	lcm = a > b ? a : b;
    	while(1)
    	{
    		if((lcm % a==0) && (lcm % b==0))
    			break;
    		lcm++;
    	}
    	return lcm;
    }
    
    int main()
    {
    	size_t a, b, result;
    	printf("请输入两个整数:>");
    	scanf("%d %d", &a, &b);
    
    	result = GCD(a, b);
    	printf("%d和%d的最大公约数为:%d
    ", a, b, result);
    	result = LCM(a, b);
    	printf("%d和%d的最小公倍数为:%d
    ", a, b, result);
    
    	return 0;
    }
    

    运行结果:

    写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输人

  • 相关阅读:
    POJ-2955 Brackets(括号匹配问题)
    NYOJ
    石子合并问题
    hdu 4915 括号匹配+巧模拟
    hdu 4920
    hdu 4911 求逆序对数+树状数组
    hdu 4923 单调栈
    hdu 4930 斗地主恶心模拟
    hdu 4927 组合+公式
    hdu 4925 黑白格
  • 原文地址:https://www.cnblogs.com/inta/p/13356679.html
Copyright © 2020-2023  润新知