public static int negate(int a)
{int neg=0;
int d=a<0?1:-1;
while(a!=0)
{
neg+=d;
a+=d;
}
return neg;
}
//两数相减相当于对b取反,然后将两数相加
public static int minus(int a,int b)
{
return a+negate(b);
}
要对数值k取反,只需将-1连加k次。
乘法
a乘以b其实就是将a连加b次
/*
将a连加b次,实现a乘以b
*/
public static int multiply(int a,int b)
{
if(a<b)
{
return multiply(b,a);//若b<a,算法会比较快
}
int sum=0;
for(int i=abs(b);i>0;i--)
{
sum+=a;
}
if(b<0)
sum=negate(sum);
return sum;
}
//返回绝对值
public static int abs(int a)
{
if(a<0)
return negate(a);
else
return a;
}
public int divide(int a,int b) throws java.lang.ArithmeticException
{
if(b==0)
{
throw new java.lang.ArithmeticException("ERROR");
}
int absa=abs(a);
int absb=abs(b);
int product=0;
int x=0;
while(product+absb<absa)
{
product+=absb;
x++;
}
if((a<0&&b<0)||(a>0&&b>0))
{
return x;
}
else
{
return negate(x);
}
}