最大公倍数をユークリッド互除法を用いて求めたいんだが
入力した2数の小さいほうがそのまま出力してしまう…

#include<iostream>
using namespace std;
int func(int x,int y);
int main(){
int a,b,gcd;
cout <<"数値を二つ入力してください\n";
cin >>a>>b;
gcd=func(a,b);
cout <<"最大公約数は"<<gcd<<"です\n";
return 0;
}
int func(int x,int y){
int r;
if(x<=y){r=x; x=y; y=r;}
while(1){
x%=y;
if(x==0) break;
r=x; x=y; y=x;
}
return y;
}

すごく初歩なんだろうけどお願いします