java程序在不使用%运算符且不使用for循环的情况下查找m%n

时间:2014-02-21 11:24:27

标签: java operators modulo

java程序在不使用%运算符的情况下找到m%n,我只使用%,有没有人可以帮助我而不使用%运算符?

public class mod{
public static void main(String[] args){
int m=3, n=2; 
System.out.print("m%n is"+m%n); 
}}

我想找到没有%运算符的m%n

6 个答案:

答案 0 :(得分:4)

你不需要加倍。你可以做到

int mod = m - m / n * n;

剩余部分是作为除法的结果计算的,并且许多cpus在单个操作中具有整数除法和余数。因此,将它们组合在一起是个好主意,因此JIT可以对它们进行优化。例如以下代码可以是单个机器代码指令

int a = m / n;
int b = m % n;

这种组合非常适合将整数转换为文本,因为/ 10% 10组合使用。

答案 1 :(得分:3)

就像

一样简单
m - n * (m / n);

答案 2 :(得分:2)

n * ((double)m / n - m / n)是单向的。

这是有效的,因为m / n将以整数运算执行,但(double)m / n由于其中一个整数的提升而处于浮点状态。

答案 3 :(得分:1)

有数百种方法可以做到这一点,以及除法/乘法方法,你也可以做这样的事情,例如:

while (m>=n)
    m-=n;

如果所有循环都被禁止,不仅仅是循环,而且还有诸如递归之类的选项,那就越难了。

答案 4 :(得分:1)

试试这个:

System.out.print("m%n is"+(m-m/n*n));

答案 5 :(得分:1)

你也可以:

m - (m / n) * n;