Thursday, July 07, 2016

Number of even numbers

Given a start number and end number, figure out how many even numbers in between them.

1. you can do bruteforce ways to loop through numbers between them and count the even numbers.
2. or, thinking of there will be one even number within two consecutive numbers, you can come out a fomlar:

 if(e-s+1 is even) then
    return (e-s+1)/2;
 else{
    if(s is even) then
      return (e-s+2)/2;//borrow a number to make it even count
   else
      return (e-s)/2;
}

for example: 2 to 4, 4-2+1 is odd number , so that (4-2+2)/2=2.
3 to 5, (5-3)/2=1

3 to 7, (7-3+1)=5, it is even, and 3 is even, so (7-3)/2=2.

3. an easier to understand formula:
observe
n : even, odd
1 : 0, 1
2: 1, 1
3: 1, 2
4: 2, 2
5: 2, 3
6: 3, 3
7: 3, 4
etc 


first of all, for one number n, 
n is even: the number of even and odd numbers is n/2 and n/2 respectively. 
     even: n/2     odd: (n)/2
n is odd: the number of even and odd numbers is (n-1)/2 and (n+1)/2 respectively. 

    even: (n-1)/2  odd:(n+1)/2
 


if giving a range, you can calculate them separately, then minus smaller ones from bigger ones:


int countEvenNumbers(int s, int e){
    int more = e%2==0?e/2:(e-1) /2;
    int less=s%2==0?s/2:(s-1)/2;
    return more -less;
}

No comments: