2013-08-05 4 views
1

Я решаю problem 25 на Project Euler. Я написал код для него в C#. Однако в этом случае мне нужно было использовать «BigInt», поскольку Int64 не был достаточно большим, чтобы удерживать номер. Но, когда я помещаю using System.Numerics;, он дает сообщение об ошибке во время компиляции (сообщение в заголовке). Почему это? Я использую Mono 2.10.9.Тип или имя пространства имен 'Numerics' не существует в пространстве имен 'System'

Мой код:

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); 
    } 
} 

ответ

3
mcs -r:System.Numerics.dll main.cs 

man mcs должен сделать вам почести.

В зависимости от вашей моно версии вы можете использовать dmcs и/или обновить.

О, и это BigInteger, не BigInt

+0

Появляется сообщение об ошибке: «Ошибка CS0006: Файл метаданных« System.Numerics.dll »не найден.» – Stormboy

+0

Я думаю, что часть «или обновления» применяется. Меня устраивает. (Ubuntu Raring) – sehe

+0

Должен использовать dmcs, который предназначен для профиля .NET 4, http://www.mono-project.com/CSharp_Compiler –

3

Вы должны добавить ссылку на System.Numerics.dll.

+2

Как бы я сделать это в моно? Я не использую IDE. Просто инструменты компилятора. – Stormboy

Смежные вопросы

 Смежные вопросы