Eye Sun Eye Sun - 8 months ago 81
Python Question

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

Answer Source

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)
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download