3

我正在解决Project Euler上的问题 25。我用 C# 为它写了一个代码。但是在这种情况下,我需要使用“BigInt”,因为 Int64 不足以容纳该数字。但是,当我输入 时,它会在编译期间给出错误消息(标题中的消息)。为什么是这样?我正在使用单声道 2.10.9。using System.Numerics;

我的代码:

using System;
using System.Numerics;

public class Problem_25{
    static BigInt fib(int n){
        double Phi = (1+Math.Sqrt(5))/2;
        double phi = (1-Math.Sqrt(5))/2;
        BigInt an = Convert.BigInt((Math.Pow(Phi, n)-(Math.Pow(phi, n)))/Math.Sqrt(5));
        return an;
    }
    static void Main(){
        int i = 100;
        int answer = 0;
        string current_fn = "1";
        while(true){
            current_fn = Convert.ToString(fib(i));
            if(current_fn.Length == 1000){
                answer = i;
                break;
            }
            else{
                i++;
            }
        }
        Console.WriteLine("Answer: {0}", answer);
    }
}
4

2 回答 2

6

You need to add a reference to System.Numerics.dll.

于 2013-08-05T20:14:23.890 回答
3
mcs -r:System.Numerics.dll main.cs

man mcs应该做你的荣誉。

根据您可能想要使用dmcs和/或升级的单声道版本。

哦,它是BigInteger,不是BigInt

于 2013-08-05T20:36:33.913 回答