我是靠谱客的博主 迷人早晨,最近开发中收集的这篇文章主要介绍JAVA大数整除,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

请编写程序,从键盘输入一个整数n,找出大于long.MAX_VALUE且能被n整除的前3个数字。
大于long.MAX_VALUE的数字 需要用到大数类型的数据类型。

输入格式:

输入一个作为除数的整数n,例如: 17

输出格式:

输出大于long.MAX_VALUE且能被n整除的前3个数字,例如下列三个数能被17整除且大于long.MAX_VALUE: 9223372036854775816 9223372036854775833 9223372036854775850

输入样例:

103

输出样例:

9223372036854775832
9223372036854775935
9223372036854776038

正确的代码:

import java.math.BigInteger;
import java.util.Scanner;

public class Main{
         public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        int n=input.nextInt();
        int count=0;
        BigInteger j=new BigInteger(String.valueOf(Long.MAX_VALUE));
        j=j.add(BigInteger.valueOf(1));
        while(count<3){
            if(j.mod(BigInteger.valueOf(n)).intValue()==0){
                System.out.println(j.toString());
                ++count;
                }
        j=j.add(BigInteger.valueOf(1));
        }
        input.close();
         }
}

部分正确的代码:


import java.math.BigDecimal;
import java.util.Scanner;


public class ThreeMax {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        double str=(double)Long.MAX_VALUE;
        int count=0;
        BigDecimal bd = new BigDecimal(str);
        BigDecimal i= new BigDecimal(1.0);
        BigDecimal j= new BigDecimal(0.0);
        while(count<3){
            BigDecimal ef=bd.divide(BigDecimal.valueOf(n),6);
           if (ef.subtract(BigDecimal.valueOf(0))==j)
           {   count++;
               System.out.println(bd);
           }
           bd.add(j);
        }
        sc.close();
    }
}

具体原因(大数知识不足)
首先BigDecimal不是大整数,它是对于小数进行了扩大,使得小数的精度可以达到10(-Range)其中Range=232,对于整数范围没有确定;而BigInteger是大数(特指整数)没有小数位避免了精度问题。
代码中:在部分正确的代码中使用了BigDecimal.divide()这一方法,小数部分虽有很大的精度,但是也不能保证绝对相等;而利用BigInteger.mod()或者BigDecimal.remander()可以直接进行取余操作来判断是否为输入数的整数倍。(还在补充中)

javaAPI地址如下:
https://tool.oschina.net/apidocs/apidoc?api=jdk-zh

最后

以上就是迷人早晨为你收集整理的JAVA大数整除的全部内容,希望文章能够帮你解决JAVA大数整除所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部