Search code examples
c#.netperfect-square

Return the first perfect square that is greater than its integer argument


I need to write a function that returns the first perfect square that is greater than its integer argument. A perfect square is an integer that is equal to some integer squared. For example 16 is a perfect square because 16 = 4 * 4. However 15 is not a perfect square because there is no integer n such that 15 = n*n.

public static int NextPerfectSquare(int inputNumber)
{
    if (inputNumber < 0) return 0;
    inputNumber++;
    var result = Math.Sqrt(inputNumber);
    var resultnumber = (int) result;
    if (resultnumber == result) return inputNumber;
    resultnumber++;
    return resultnumber * resultnumber;

}

Is this right?


Solution

  • The basic solution looks good. You may want to consider:

    • Should comments be added to this function? Maybe not for an exam, but worth considering.
    • Use consistent casing for your parameters/local variables. Consider whether they could be named more clearly.
    • What about boundary conditions? You've got the negative case covered, but what if inputNumber is close to int.MaxValue so that the next perfect square would be > MaxValue?