gpt4 book ai didi

c# - C#中的1000位数字

转载 作者:太空狗 更新时间:2023-10-29 23:54:12 27 4
gpt4 key购买 nike

我正在研究 Project Euler遇到了问题。

我无法使用 1000 位数字,我想知道我是否做错了什么,或者只是以错误的方式解决了这个问题,如果是这样,最好的方法是什么?

C#

namespace ToThePowerOf
{
class Program
{
static void Main(string[] args)
{
BigInteger n = 1;
int x = 0;
BigInteger [] number;
number = new BigInteger[149194];
number[x] = 1;
number[x + 1] = 1;
x = 3; ;
BigInteger check = 10000000000000000000000000000
0000000000000000000000000000000
0000000000000000000000000000000
0000000000000000000000000000000
0000000000000000000000000000000
0000000000000000000000000000000
0000000000000000000000000000000
0000000000000000000000000000000
0000000000000000000000000000000
00000000000000000000000;

for (int i = 99; i > 0; i--)
{
n = (n - 1) + (n - 2);
number[x] = n;
x++;
if (n > check)
{
Console.WriteLine(x);
}
}
}
}
}

最佳答案

我猜你遇到的“问题”(包含错误消息会有所帮助)是编译器不喜欢 1000 位的整数文字,所以你不能用非常大的整数文字初始化它.正如其他人指出的那样,将整数文字分成多行也是无效的。

number[x] = 1; 行之所以有效,是因为编译器可以处理整数文字 1 并且因为我们将它分配给 BigInteger 它使用 BigIntegerimplicit operator将其转换为 BigInteger


解决大整数文字问题的一个简单方法是使用 BigInteger.Parse创建 1000 位数字的方法。

BigInteger check = BigInteger.Parse("10000....", CultureInfo.InvariantCulture);

另一种方法可能是用一个小的 int 初始化它,然后使用数学得到你想要的数字,如 Jon Skeet's answer .

关于c# - C#中的1000位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8504896/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com