假设求619458能否被11整除。步骤如下:
6%11 = 6,
61%11 = 6,(解释:61是上一步的余数+第二位数形成的,如果上一步的结果为0,则这步是1%11)
69%11=3
34%11=1
15%11=4
48%11=4
最后一步的结果不为0,所以619458不能被11整除,结果为0则可以被整除。
把619458换成字符串长文本数字也成立。
//字符串数字s能否被n整除
public static boolean Count(String s,int n){
//前一位数的余数
int pre = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if( pre != 0 ){
pre = addNum(pre,c) % n;
}else {
pre = (c-'0')%n;
}
}
return pre == 0;
}
//合并n和c,例如 n = 12, c = '4' ,结果 = 124
public static int addNum(int n, char c){
return Integer.parseInt(n + String.valueOf(c));
}