Java程序可以在不使用模数的情况下被三整除

时间:2012-07-18 09:59:13

标签: java

我想创建一个程序,其中用户将键入一个数字,程序将告诉它是否可以被3整除。但%,/,+,*不能在程序中使用。这里的任何人都有一些想法如何做到这一点?

5 个答案:

答案 0 :(得分:6)

public static void main(String[] args) {
    String number = "123456";

    int sum = 0;
    for (char c : number.toCharArray()) {
        sum = sum - (0 - c) - '0';
        while (sum >= 3) {
            sum -= 3;
        }
    }
    System.out.print("divisible by 3? ");
    System.out.println(sum == 0);
}

或者,您可以继续减去3,直到您的数字为0(可被3整除)或<0:不能被3整除。

ps:如果你想处理负数,需要进行调整

答案 1 :(得分:3)

容易羞怯......

boolean divisibleBy3(int n) {
    return (""+n).matches("([0369]|[147]([0369]|[147][0369]*[258])*([" +
                          "258]|[147][0369]*[147])|[258]([0369]|[258]" +
                          "[0369]*[147])*([147]|[258][0369]*[258]))*");
}

答案 2 :(得分:2)

如果所有数字的总和也可被3整除,则数字可被整除。您可以迭代该过程,直到数字小于10并将其与已知除数(3,6和9)进行比较

由于它很可能是游戏或家庭作业,你可以使用+,你可以简单地使用减去两次:a - - b相当于a + b

答案 3 :(得分:1)

假设您可以使用 - 运算符

bool divBy3(int n)
{
  while (n >= 0)
  {
    n -= 3;
  }

  return n == 0;
}

如果n可以被3整除,则返回true,否则返回false。请注意,这实在是效率低下!使用%运算符会好得多。

答案 4 :(得分:0)

二进制表示中3的可分性就像十进制中的11的可分性(10 + 1):偶数位数的总和减去奇数位数上的数字之和依次可被3整除(可能为0)。