Search code examples
pythonxor

Multiple of 4 using XOR (Python)


To check whether a number is a multiple of 4 or not without using +, -, * ,/ and % operators.

def multipleFour(n):
   if n == 1:
     return False
   XOR = 0
   for i in range(n):
        XOR = XOR ^ 1
   return XOR == n
multipleFour(20)

My answer returns False


Solution

  • You are mistaken in your for loop as well as xor statement. It should be like -

    def multipleFour(n):
       if n == 1:
         return False
       XOR = 0
       for i in range(1, n+1):
            XOR = XOR ^ i
       return XOR == n
    multipleFour(20)
    

    i.e. your loop must run for i=1 to i=n and not i=0 to i=n-1. And it must be xor = xor ^ i

    EDIT:

    As pointed out in comments, for i in range(1, n+1) does not meet the condition of not using +, but by little modification, this thing can be solved as -

    def multipleFour(n):
           if n == 1:
             return False
           XOR = n
           for i in range(1, n):
                XOR = XOR ^ i
           return XOR == n
        multipleFour(20)