描述
已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k.
输入描述:
若干个非负整数c,c的位数<=30 每行一个c
输出描述:
每一个c的结果占一行 1) 若存在满足 c%k == 0 的k,输出所有这样的k,中间用空格隔开,最后一个k后面没有空格。 2) 若没有这样的k则输出"none" 注意整数溢出问题 不要对-1进行计算
示例1
输入:
30 72 13 -1
输出:
2 3 5 6 2 3 4 6 8 9 none
代码如下
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/*
* 大整数因子
*/
public class BigIntegerYinZi {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
BigInteger bi = scanner.nextBigInteger();
//大数类型的0表示为:BigInteger.ZERO
if (bi.compareTo(BigInteger.ZERO) < 0) {
continue;
}
List<Integer> myList = new ArrayList<Integer>();
for (int k = 2; k <= 9; k++) {
BigInteger kbi = new BigInteger(Integer.toString(k));
//大数类型取余操作bigInteger.mod(bigInteger)
if(bi.mod(kbi) == BigInteger.ZERO) {
myList.add(k);
}
}
if (myList.size() == 0) {
System.out.println("none");
continue;
}else {
for(Integer i : myList) {
System.out.print(i+" ");
}
}
System.out.println();
}
}
}