如何使用java或c计算3^1002的数字之和?
由于java或c中的数据类型无法处理如此大的数字。我可以使用什么逻辑来查找数字的总和?尝试以下方法:如何使用java或c计算3^1002的数字之和?,java,c++,c,Java,C++,C,由于java或c中的数据类型无法处理如此大的数字。我可以使用什么逻辑来查找数字的总和?尝试以下方法: BigInteger big = BigInteger.valueOf(3).pow(1002) 不可变的任意精度整数。所有操作的行为都像 大整数用二的补码表示法(类似于Java的 基元整数类型)。BigInteger提供了所有 Java的基本整数运算符,以及 java.lang.Math。此外,BigInteger还为 模运算、GCD计算、素性测试、素数 生成、位操作和其他一些杂项 行动
BigInteger big = BigInteger.valueOf(3).pow(1002)
不可变的任意精度整数。所有操作的行为都像
大整数用二的补码表示法(类似于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);
}
使用
BigInteger
计算对于基元来说太大的数字-它包含解决问题所需的基本数学函数。Java:
int baseNum = 3;
int power = 1002;
BigInteger bigInt = BigInteger.valueOf(baseNum).pow(power + 1).divide(BigInteger.valueOf(baseNum - 1));
System.out.println(bigInt);
对于C或C++的任何一个BigNem库,使用<代码> java > Maig.BigTung</C> >。在C++中使用一个库,如GMP或MPIR。都是开源的。当你说数字之和时,你的意思是数字之和512=5+1+2,你的3^1002“数字”根本不是一个数字。它比其他任何东西都更像一个字符串,并且可以这样处理,轮流使用BigInteger的每一部分都不太本地化。这是一个开始,但它不能得到数字的总和。对于这个精确的问题,有一个公式,不需要手工操作。是(1-3^(N+1))/(1-3)@TedHopp我添加了数字之和的代码。@vlad Ardelen我不明白你的公式是什么?@vlad Ardelen-那是从1到3^N的数字之和,不是3^N的数字之和。Achintya-现在你得到我的+1了。
int baseNum = 3;
int power = 1002;
BigInteger bigInt = BigInteger.valueOf(baseNum).pow(power + 1).divide(BigInteger.valueOf(baseNum - 1));
System.out.println(bigInt);