Javatpoint标志
Javatpoint标志

在给定范围内偶数和奇数的数目

给定下限x和上限y,如果我们要计算范围内奇数和偶数的数量,我们可以选择使用for循环的常规方法,并从下限迭代到上限,检查范围内的每个数字是否能被2整除,例如:

在C:

输出:

在给定范围内偶数和奇数的数目

当我们给出几百的小范围时,代码可以正常工作,但当我们尝试尝试更大的范围(更高的上限)时,代码需要更多的时间。就像上面的例子一样,它花了10.45秒。

每次要写代码时,把错误放在一边,代码的效率总是由以下因素决定的:

  1. 时间
  2. 空间

我们应该用合理的逻辑不花太多时间来解决这个问题。

逻辑:

让我们举一些例子,然后我们自己来做一个公式:

下限= L

上限= R

包含两个极限(N)的范围内的数字个数:(R - L + 1)

  1. 当N是偶数时:
    例如:

    下限= 10
    上限= 15
    N = 15 - 10 + 1 = 6
    数字:[10,11,12,13,14,15]
    偶数数:N/2 = 3 = [10,12,16]
    奇数个数:N/2 = 3 = [11,13,15]
  2. 当N为奇数时:
    1. 当下限和上限为偶数时:
      例如:

      下限= 10
      上限= 16
      N = 16 - 10 + 1 = 7
      奇数= [11,13,15]-> 7/2 = 3
      偶数= [10,12,14,16]-> N -奇数= 7 -3 = 4
    2. 当下限和上限为奇数时:
      例如:

      下限= 11
      上限= 15
      N = 15 - 11 + 1 = 5
      奇数= [11,13,15]-> 5/2 + 1 = 3
      偶数= [12,14]-> N -奇数= 5 - 3 = 2

所以:

  1. 当范围内有偶数个数字时,其中一半是偶数,另一半是奇数。
  2. 当我们有奇数个数字时
    1. 如果下限和上限均为偶数,则奇数个数:下限(N/2)
    2. 如果下限和上限均为奇数,则奇数个数为:(N/2) + 1

现在让我们用这个逻辑在C语言中设计一个程序:

输出:

在给定范围内偶数和奇数的数目
  1. 我们检查了数字的数量(count)是否为偶数,当下限和上限都是不同类型(偶数,奇数)时,就会发生这种情况。
    3.456
    23.45
  2. 现在,剩下的两种情况是当上限和上限都是同一种情况:
    23.4 - >奇数:3/2 = 1
    3.45 ->奇数:3/2 + 1 = 2

我们也可以使用等差级数:

通过使用nthAP的项公式:A + (n - 1)*d

我们可以求出偶数的个数,也可以求出奇数的个数,然后从总数中减去这个数来求另一个数。

让我们为不同的情况编写代码:

Case1:下限和上限是偶的:

假设我们要找出10到20的偶数个数:

1011121314151617181920.

观察:

  • 这些数字在d = 1的AP中
  • 粗体数字是在另一个AP中,d = 2
  • 所以,我们可以找到20在加粗AP中的位置,来求区间内偶数的个数:
    20 = 10 + (n - 1)*2
    10 = (n - 1)*2
    5 = (n - 1)
    N = 6
  • 现在,11 - 6 = 4个奇数。

情形2:下限和上限为奇数

假设我们要找出10到20的偶数个数:

111213141516171819

观察:

  • 这些数字在d = 1的AP中
  • 粗体数字是在另一个AP中,d = 2
  • 第一项= a = a + 1 = 12
  • 现在,我们可以找到(last term - 1) = 18的位置来找到偶数的个数,就像前面的例子一样:
    18 = 12 + (n - 1)*2
    6 = (n - 1)*2
    3 = (n - 1)
    N = 4
  • 现在,奇数的个数= 9 - 4 = 5

情况3:奇下限,偶上限

假设我们要找出10到20的偶数个数:

11121314151617181920.

观察:

  • 这些数字在d = 1的AP中
  • 粗体数字是在另一个AP中,d = 2
  • 第一项= a = a + 1 = 12
  • 现在,我们可以找到上一项= 20的位置,以找到与第一种情况类似的偶数的个数:
    20 = 12 + (n - 1)*2
    8 = (n - 1)*2
    4 = (n - 1)
    N = 5
  • 现在,奇数的个数= 10 - 5 = 5

情形4:偶数下限和奇数上限

假设我们要找出10到20的偶数个数:

121314151617181920.21

观察:

  • 这些数字在d = 1的AP中
  • 粗体数字是在另一个AP中,d = 2
  • 第一项= a = 12
  • 现在,我们可以找到上一项的位置-1 = 20,以找到与第一种情况类似的偶数的个数:
    20 = 12 + (n - 1)*2
    8 = (n - 1)*2
    4 = (n - 1)
    N = 5
  • 现在,奇数的个数= 10 - 5 = 5

所以,把它们都放在一个地方:

  1. 如果下限和上限都是偶数,我们可以用nth-项公式
  2. 如果下限或上限中有一个是奇数,我们需要修改极限:
    低=低+ 1
    Upper = Upper - 1

计划:

输出:

下限输入:10上限输入:20偶数个数:6奇数个数:5

编程技能都是关于思考能力的。注意,我们上面讨论的两种方法是相似的。


下一个话题 qsort()在C





Youtube 观看视频请加入我们的Youtube频道:现在加入

反馈


帮助他人,请分享

脸谱网 推特 pinterest

学习最新教程


准备


热门的技术


B.Tech / MCA






Baidu
map