1

ユーザーが数字を入力し、それが3で割り切れるかどうかをプログラムが判断するプログラムを作成したいと思います。ただし、%、/、+、*はプログラムで使用できません。ここの誰かがそれを行う方法についていくつかのアイデアを持っていますか?

4

5 に答える 5

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);
}

または、数値が0(3で割り切れる)または<0:3で割り切れないまで3を引き続けることができます。

ps:負の数を処理したい場合は適応させる必要があります

于 2012-07-18T10:04:38.897 に答える
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]))*");
}
于 2012-07-18T10:07:06.953 に答える
2

すべての桁の合計も3で割り切れる場合、数値はそこで割り切れます。10より小さい数になるまでプロセスを繰り返し、既知の除数(3、6、および9)と比較できます。

ゲームや宿題の可能性が高く、使用できるので、+マイナス2回の簡単な使用が可能ですa - - ba + b

于 2012-07-18T10:03:29.527 に答える
1

-演算子を使用できると仮定すると、

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

  return n == 0;
}

これは、nが3で正確に割り切れる場合はtrueを返し、それ以外の場合はfalseを返します。これは本当に非効率的であることに注意してください!%演算子を使用する方がはるかに優れています。

于 2012-07-18T10:10:03.080 に答える
0

バイナリ表現での3による除算は、10進数(10 + 1)での11による除算に似ています。偶数の桁の合計から奇数の桁の合計を引いたものが3で割り切れます(おそらく0)。

于 2012-07-18T11:36:33.283 に答える