Answer to Question while-3

  bool perf;
  int sum = 0;
  int k   = 1;
  while(k < n)
  {
    if(n % k == 0)
    {
      sum = sum + k;
    }
    k++;
  }
  perf = (sum == n);
Should we add a test to see whether 0 < k < n? After all, the problem statement says that. The answer is no. Since k starts at 1 and the loop body is only done when k < n, asking whether 0 < k < n is redundant.