查找范围内的奇数整数的总数

时间:2018-02-09 12:41:06

标签: c++ range

如果我想找到leftrange和rightrange之间奇数整数的总数,你觉得这有效吗?

示例leftrange = 3,rightrange = 8。

int FindOdd(int left, int right)
{
   bool lefteven  = (left  % 2) ? false: true;
   bool righteven = (right % 2) ? false: true;
   int length = (right-left) + 1;

   if (lefteven != righteven) //even length
   {
      return (length/2);
   }

   else //odd length
   {
      if (!lefteven)
          return ((length/2) + 1);

      else
          return (length/2);
   }
}

1 个答案:

答案 0 :(得分:3)

这是一种笨拙的方式。更好的方法是使用整数除法

unsigned FindOdd(unsigned a, unsigned b)
{
    return b / 2 - a / 2;
}

如果b为奇数,则不包括最终数字。为了优雅,我将这些类型改为unsigned