为什么解决方案是这样的?

iwa*_*ram 1 java

从Java Malik教科书中确定一个数字是否可以被11整除.

代码解决方案:

import java.util.*;

public class Divby11
{
    static Scanner console = new Scanner(System.in);

    public static void main (String[] args)
    {
        int num, temp, sum;
        char sign;

        System.out.print("Enter a positive integer: ");
        num = console.nextInt();
        System.out.println();

        temp = num;

        sum = 0;
        sign = '+';

        do
        {
            switch (sign)
            {
            case '+' :
                sum = sum + num % 10;
                sign = '-';
                break;

            case '-' :
                sum = sum - num % 10;
                sign = '+';
            }

            num = num / 10;       //remove the last digit
        }
        while (num > 0);

        if (sum % 11 == 0)
            System.out.println(temp + " is divisible by 11");
        else
            System.out.println(temp + " is not divisible by 11");
    }
Run Code Online (Sandbox Code Playgroud)

为什么要经历上面的所有努力,只是说......

  if (sum % 11 == 0)
            System.out.println(temp + " is divisible by 11");
        else
            System.out.println(temp + " is not divisible by 11");
Run Code Online (Sandbox Code Playgroud)

你们中的任何一位专家都可以看到为什么作者会这样做(很长的路)?

dfa*_*dfa 7

对于11可分性规则:

  • 形成数字的交替和
  • 如果这个总和可以被11整除,那么这个数字可以被11整除

例子

  • 68090 = 0 - 9 + 0 - 8 + 6 = -11 => TRUE
  • 493827 = 7 - 2 + 8 - 3 + 9 - 4 = 15 = 4 => FALSE