-1

由于 java 或 c 中的数据类型无法处理如此大的数字。我可以用什么逻辑来查找数字的总和?

4

3 回答 3

6

尝试这个:

BigInteger big = BigInteger.valueOf(3).pow(1002)

大整数

不可变的任意精度整数。所有操作的行为都好像 BigIntegers 以二进制补码表示法表示(如 Java 的原始整数类型)。BigInteger 提供了与 Java 的所有原始整数运算符的类似物,以及 java.lang.Math 中的所有相关方法。此外,BigInteger 还提供模算术、GCD 计算、素数测试、素数生成、位操作和一些其他杂项操作的操作。

您想在 3^1002 中添加数字总和。试试这个:

public static void main(String[] args) throws ParseException {
    BigInteger big = BigInteger.valueOf(3).pow(1002);
    String s = big.toString();
    System.out.println("3^1002 :-" + big);
    int sum = 0;
    for (int i = 0; i < s.length(); i++) {
        sum = sum + Integer.parseInt(String.valueOf(s.charAt(i)));

    }
    System.out.println("Sum of digits = "+sum);
}

输出:

3^1002 :-11898637375327259732014097337769299293688798294769333508984283314041457376120344095867004824655472557675187999271853241203558591238905570206788084527321583066248582026784887234902132968060683571469513601058297562370160530340607849942554095557486780070414555603129323099649923489573350062357188314294245225987472417074007240612055747584770991072267007636764090438484359179546617239448259650885170465292981543834807042949776925329153470838724492488095529295189557924920125696980009
Sum of digits = 2214
于 2013-04-26T14:08:17.740 回答
1

用于BigInteger计算对于基元来说太大的数字 - 它包含您的问题所需的基本数学函数。

于 2013-04-26T14:08:48.200 回答
0

爪哇:

int baseNum = 3;
int power = 1002;
BigInteger bigInt = BigInteger.valueOf(baseNum).pow(power + 1).divide(BigInteger.valueOf(baseNum - 1));
System.out.println(bigInt);
于 2013-04-26T14:10:02.933 回答