Mange gode forslag, dog kunne alle ikke svare 100% korrekt. Der er nemlig introduceret 2 nye typer i .NET 4.0. De ligger begge i System.Numerics namespacet og hedder BigInteger og Complex.
BigInteger har faktisk været en del af frameworket før, men blev pillet ud i 3.5. Nu er typen altså tilbage igen.
Lågens vinder med dette svar er Mads Mau Pedersen.
public static class NumericsExtensions
{
//Brug af Newton-Raphson metoden til at finde heltals kvadratroden.
//Her brugt på BigInteger
public static BigInteger IntegerSqrt(this BigInteger n)
{
if (n < 0)
{
throw new ArgumentOutOfRangeException("n", "value must be 0 or greater.");
}
if (n.IsZero)
{
return BigInteger.Zero;
}
BigInteger guess = n + 1;
BigInteger nextGuess = (n / 2) + 1;
while (nextGuess < guess)
{
guess = nextGuess;
nextGuess = (guess + (n / guess)) / 2;
}
return guess;
}
}
Tillykke, der er en stor dåse bolcher på vej til dig.
I kan downloade deltagernes svar her.