【问题标题】:java program to find m%n without using % operator and without using for loopjava程序在不使用%运算符和不使用for循环的情况下查找m%n
【发布时间】:2014-02-21 11:24:27
【问题描述】:

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

【问题讨论】:

  • sum n m次,而sum

标签: java operators modulo


【解决方案1】:

你不需要加倍。你可以这样做

int mod = m - m / n * n;

余数是作为除法的结果计算的,许多 CPU 在单个操作中都有整数除法和余数。出于这个原因,将它们放在一起是一个好主意,以便 JIT 可以优化它们。例如以下代码可能是单个机器代码指令

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

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

【讨论】:

    【解决方案2】:

    就这么简单

    m - n * (m / n);
    

    【讨论】:

      【解决方案3】:

      n * ((double)m / n - m / n) 是一种方式。

      这是有效的,因为m / n 将以整数运算执行,但(double)m / n 以浮点数执行,因为提升了整数之一。

      【讨论】:

        【解决方案4】:

        试试这个:

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

        【讨论】:

        • @OP 为什么你接受唯一无法编译的答案? - 运算符未在字符串上定义,因此表达式应放在括号中。
        【解决方案5】:

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

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

        如果所有循环都被禁止,不仅仅是 for 循环,而且还有递归等选项,那就更难了。

        【讨论】:

          【解决方案6】:

          你也可以:

          m - (m / n) * n;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-11-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-22
            相关资源
            最近更新 更多