任意长度的数能否被N整除

来源:互联网 发布:流星网络电视破解版 编辑:程序博客网 时间:2024/05/02 05:42
public class Test {    /**     * 求一个由数字组成的任意长度的字符串能否被N整除     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub         String str = "54354358093245892583457839730957349857394857367935384895";            int n= 7;            checkModN(str, n);                }    private static  void checkModN(String str, int n) {    String temp = str;    int e = 0;    for(int i=0;i<temp.length();i++) {    int h = Integer.parseInt(temp.substring(i,i+1));    e = (e*10 + h)%n;    }    System.out.println("e = "+ e);    if(0==e) {    System.out.println("This number can be mod by "+n);    }else {    System.out.println("This number cann't be mod by "+n);    System.out.println("You can add "+(n-e)+" or sub "+ e);    }    }}

从高位开始逐个读入字符串,然后mod 7,记录余数,读到下一位时将余数*10+当前的值,继续mod 7,记录余数......

String str = "5673454322...............323223";
一下为余数部分
5 0 0 3 6 2 3 6 0 2 1......