Thursday 11 February 2016

Check Oddity

Check Oddity
Write the precise code to check the number is Odd or not.

Approach#1
Check the module 2 of number is Zero. If it Zero, number is Odd.

public boolean oddOrNot(int num) {
     return num % 2 == 1;
}

Problem: It will not return the correct result for the negative number.

Approach#2
If number is positive/negative, Subtract 2/-2 from number respectively until the number result is Zero or one.

public boolean oddOrNot(int num) {
     int s = 0;
     if(num>0) {
           s = 2;
     } else {
           s = -2;
     }
     while(num>1) {
           num = num – s;
     }
     if(num==0) {
           return false;
     } else {
           return true;
     }
}

Complexity of given approach is O(num).

Approach#3

Example: Number = 10
Binary representation of 10 = 1010
Binary representation of 1   = 0001
Logical AND of both numbers = 0000.

A number will be Odd iff last bit of binary representation is 1.

public boolean oddOrNot(int num) {
    return (num & 1) != 0;
}

This is highly optimized code. Since, Arithmetic and Logical operations are much faster compared to division and multiplication.

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...