常规的短除代码
#include<bits/stdc++.h>//短除
#define ll long long
using namespace std;
int main(){
ll a,b,x,y,c,d=1;
cin>>a>>b;
x=a;
y=b;
for(int i=2;i<=a&&i<=b;i++){
while(a%i==0&&b%i==0){
a=a/i;
b=b/i;
d*=i;
}
}
cout<<d<<" "<<x/d*y;
}
本人灵机一动写的抽象短除代码
#include<bits/stdc++.h>//短除 (抽象
#define ll long long
using namespace std;
ll gcd(int a,int b){
if(a%b==0){
return b;
}
else{
return gcd(b,a%b);
}
}
int main(){
ll a,b,x,y;
ll sum=1;
ll c=2;
cin>>a>>b;
x=a;
y=b;
while(gcd(a,b)!=1){
if(a%c==0&&b%c==0){
a=a/c;
b=b/c;
sum*=c;
}else{
c++;
}
}
cout<<sum<<" "<<x/sum*y;
return 0;
}
多此一举(不是