Question: 
Write a python function to check whether the given number can be represented by product of two squares or not.


Model's Code:
def prod_Square(n):
    if n < 0:
        return False
    if n == 0:
        return True
    if n == 1:
        return True
    factors = {}
    while n % 2 == 0:
        factors[2] = factors.get(2, 0) + 1
        n //= 2
    for i in range(3, int(n**0.5) + 1, 2):
        while n % i == 0:
            factors[i] = factors.get(i, 0) + 1
            n //= i
    if n > 1:
        factors[n] = factors.get(n, 0) + 1
    for p, e in factors.items():
        if p % 4 == 3 and e % 2 != 0:
            return False
    return True



Sample Correct Code:
def prod_Square(n):
    for i in range(2,(n) + 1):
        if (i*i < (n+1)):
            for j in range(2,n + 1):
                if ((i*i*j*j) == n):
                    return True;
    return False;


Asserts:
assert prod_Square(25) == False
assert prod_Square(30) == False
assert prod_Square(16) == True


Tests:
Test 1 of 3: FAIL: AssertionError()

Test 188 of 974: 137/188 (72.87234042553192%): failed