带判别式的部分正负性永远是正的,输出时候直接abs完事。
inline void print_sq(int a,int sq,int b)
{
a=myabs(a),b=myabs(b);
if(a==b)cout<<"sqrt("<<sq<<")";
else if(a%b==0)cout<<myabs(a/b)<<"*sqrt("<<sq<<")";
else if(b%a==0)
{cout<<"sqrt("<<sq<<")/"<<myabs(b/a);}
else{
int g=gcd(a,b);
if(b/g<0)g=-g;
cout<<myabs(a/g)<<"*sqrt("<<sq<<")/"<<myabs(b/g);
}
}
整数合并部分类似。