KY39 大整数的因子(用Java实现)

描述

已知正整数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();
			
		}
	}
}

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Laz124519

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值