辗转相除法 最大公因数 + 最小公倍数

//辗转相除法 最大公因数 + 最小公倍数
#include<stdio.h>
void yinshu(int a,int b){
    int temp;
    while(a % b != 0){
        temp = a;
        a = b;
        b = temp % b;
    }
    printf("%d\n",b);
}
void beishu(int a,int b){
    int a1 =a;
    int b1 = b;
    int t;
    while(a%b != 0){
        t = a;
        a= b;
        b = t % b;
    }
    printf("%d",a1/b*b1);
}
int main(){
    int a,b;
    scanf("%d %d",&a,&b);
    yinshu(a,b);
    beishu(a,b);
    return 0;
}

原文地址:https://www.cnblogs.com/expedition/p/12005739.html

时间: 2024-10-17 02:40:10

辗转相除法 最大公因数 + 最小公倍数的相关文章

最大公因数、最小公倍数、因式分解

最大公因数使用辗转相除法来求,最小公倍数则由这个公式来求. 最大公因数*最小公倍数=两数乘积  解法最大公因数可以使用递归与非递归求解,因式分解基本就是使用小于输入数的数值当作除数,去除以输入数值,如果可以整除就视为因数,要比较快的解法就是求出小于该数的所有质数,并试试看是不是可以整除,求质数是另一个问题,请参考Eratosthenes筛选求质数. 一.求最大公因数.最小公倍数 #include<stdio.h> #include<stdlib.h> int main(void){

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

//求最大公约数是用辗转相除法,最小公倍数是根据公式 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

求一组数据的最大公约数和最小公倍数

求最大公约数采用辗转相除法 求最小公倍数 = 最大公约数 * (A/最大公约数)*(B/最大公约数) //#include<stdafx.h> #include<math.h> #include<assert.h> #include<stdlib.h> #include<iostream> #include<time.h> using namespace std; #define INVALID_VALUE32 (0xffffffff

c——最大公约数和最小公倍数

PTA 1 #include<stdio.h> 2 3 int main(){ 4 int num1,num2,temp1,temp2,r; 5 scanf("%d %d",&num1,&num2); 6 temp1 = num1; 7 temp2 = num2; 8 while(temp2 != 0){ 9 r = temp1 % temp2; 10 temp1 = temp2; 11 temp2 = r; 12 } 13 printf("%d

经典算法问题的java实现 (一)

原文链接: http://liuqing-2010-07.iteye.com/blog/1396859 1.如何计算闰年(Leap Year)?   四年一闰:百年不闰:四百年再闰.   具体参照:http://baike.baidu.com/view/3085625.htm Java代码   boolean isLeapYear(int year) { return (year%4 == 0 && year%100 !=0) || (year%400 == 0); } 2.如何判断一个数

9.26&lt;立方网&gt;技术笔试题

该公司题目感觉不难,算法设计有三道大题. 1.设有m和n两个整数,求它们的最大公约数和最小公倍数. 2.猴子分桃问题,每次分桃多一个,共有五个猴子,问最少有多少个桃子. 3.关于java的题目,有A,B,C三个线程, A线程输出A, B线程   输出B, C线程输出C,要求, 同时启动三个线程, 按顺序输出ABC, 循环10次. 第一题:最大公约数可以用辗转相除法,最小公倍数等于m*n/最大公约数. //最大公约数求法 int gcd(int m,int n) { int max,min; ma

01-抽象数据类型

一.作业题目 实验题目 试仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子.分母均为整数且分母不为零的分数). 有理数基本运算如下所示: 1.构造有理数T,元素e1,e2分别被赋以分子.分母值 2.销毁有理数T 3.用e(引用类型参数)返回有理数T的分子或分母,当入参i为1时返回分子, i为2是返回分母. 4.将有理数T的分子或分母更改为e,入参i为1时改变分子, i为2是改变分母 5.有理数T1,T2相加 6.有理数T1,T2相减 7.有理数T1,T2相乘 8.有理

最大公约数(gcd)和 最小公倍数(lcm)——辗转相除法

辗转相除法(又称欧几里得算法)是求最大公因数的算法 要求a,b的最大公约数(a>b),我们可以递归地求b,a%b的最大公约数,直到其中一个数变成0,这时另一个数就是a,b的最大公约数. C++实现: int gcd(int a,int b){ retuen b?gcd(b,a%b):a; } 或: while(b!=0)  {  temp=a%b;   a=b;   b=temp; } 证明:(引自百度百科) 设两数为a.b(b<a),用gcd(a,b)表示a,b的最大公约数,r=a (mod

寻找最大公因数和最小公倍数

package 寻找公因数;import java.util.Scanner;public class 寻找公因数 { public static void main(String[] args) {          Scanner in = new Scanner(System.in);          System.out.print("input x :");          int x = in.nextInt();          System.out.print(&