考研机试 39.大整数因子
时间:2021/03/07
一.题目描述
已知正整数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进行计算,所以在读取输入后要进行判断,如果为-1则不进行任何操作。然后将读取的字符串转化为BigInteger对象,之后循环取模来输出因子。
代码
import java.util.Scanner; import java.math.BigInteger; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ //读取输入 String str = in.next(); if(!str.equals("-1")){ BigInteger num = new BigInteger(str); //计算因子 boolean flag = false; for(int i = 2; i <= 9; i++){ BigInteger y = new BigInteger(i + ""); BigInteger zero = new BigInteger(0 + ""); if((num.mod(y)).equals(zero)){ flag = true; System.out.print(i + " "); } } if(!flag){ System.out.print("none"); } System.out.println(); } } } }
努力,向上,自律