13:大整数的因子
/** * 题目名称大整数的因子 p * 题目来源http://noi.openjudge.cn/ch0106/13/ p * 程序功能输出指定非负整数的[2,9]范围内的因子 * * author 潘磊just_panleijust.edu.cn * version 1.0 */importjava.util.Scanner;publicclassMain{/** * 将指定字符串形式的非负整数转为整型数组形式。 * * param nums 指定字符串形式的非负整数。 * return nums的整型数组形式。 */publicint[]str2arr(Stringnums){intnnums.length();int[]ansnewint[n];// nums的整型数组形式/* 依次遍历nums的每一个字符 */for(inti0;in;i){/* 字符9对应数字9字符8对应数字8以此类推字符0对应数字0 9 - 0 9 8 - 0 8 以此类推 0 - 0 0 */ans[i]nums.charAt(i)-0;// 对位存储当前字符对应的整数数字}returnans;}/** * 判断[2,9]范围内的指定数字是否为指定大整数的因子。 * * param nums 指定大整数。 * param k [2,9]范围内的指定数字。 * return true当且仅当k是nums的因子否则false。 */publicbooleanisFactor(Stringnums,intk){intnnums.length();// num的长度intremainder0;// 每次除法运算得到的余数int[]digitsstr2arr(nums);// nums的各位数字/* 依次遍历digits的每一位数字 */for(inti0;in;i){// 当前数字除k的余数(前次的余数*10当前数字)%kremainder(remainder*10digits[i])%k;}returnremainder0;// k是否为num的因子取决于最后的余数是否为0}publicstaticvoidmain(String[]args){MaincallnewMain();ScannerinputnewScanner(System.in);Stringnuminput.next();booleanflagfalse;for(intk2;k9;k){if(call.isFactor(num,k)){System.out.print(k );flagtrue;}}if(!flag){System.out.print(none);}}}/** * 题目名称大整数的因子 p * 题目来源http://noi.openjudge.cn/ch0106/13/ p * 程序功能输出指定非负整数的[2,9]范围内的因子 * * author 潘磊just_panleijust.edu.cn * version 2.0 */importjava.math.BigDecimal;importjava.util.Scanner;publicclassMain{/** * 判断[2,9]范围内的指定数字是否为指定大整数的因子。 * * param nums 指定大整数。 * param k [2,9]范围内的指定数字。 * return true当且仅当k是nums的因子否则false。 */publicbooleanisFactor(Stringnums,intk){// 调用BigDecimal类的remainder方法完成大整数求余运算并根据求余结果是否为0返回true或者falsereturnnewBigDecimal(nums).remainder(newBigDecimal(k)).intValue()0;}publicstaticvoidmain(String[]args){MaincallnewMain();ScannerinputnewScanner(System.in);Stringnuminput.next();booleanflagfalse;for(intk2;k9;k){if(call.isFactor(num,k)){System.out.print(k );flagtrue;}}if(!flag){System.out.print(none);}}}