求两个数的最大公约数

求两个数的最大公约数 用cpp知识
!!!!!!!


#include <iostream>
using namespace std;

int divsion(int m,int n)
{
    int y;  //m:被除数,n:除数,r:余数
    y=m%n;
    while(y!=0)
    {
        m=n;
        n=y;
        y=m%n;
    }
    return n;
}
int main()
{
    int a,b,r;  //r:最大公约数
    cout<<"请输入两个自然数:";
    cin>>a>>b;
    r=divsion(a,b);
    cout<<a<<"和"<<b<<"的最大公约数是:"<<r<<endl;
    return 0;
}


int gcd(int a, int b) {
    if (a < b) {
        int c = a;
        a = b;
        b = c;
    }
    while (a % b != 0) {
        int r = a % b;
        a = b;
        b = r;
    }
    return b;
}

#include <iostream>
using namespace std;

int main()
{
    int m=0,n=0;
    int min;
    cin>>m>>n;
    min = m>n?n:m;
    while(min){
        if(m%min==0 && n%min==0){
            break;
        }
        --min;
    }
    cout<<min;
    return 0;
}
 

img

cpp知识什么意思


#include <bits/stdc++.h>
using namespace std;
int main(){
    int a, b, n;
    scanf("%d%d", &a, &b);
    n = min(a , b);
    while (1){
        if (a % n == 0 && b % n == 0) break;
        n--;
    }
    printf("%d", n);
    return 0;
}

不用分解质因数,直接遍历(如果数小可以)