compute the double square...... :(

Cedric Schmeits cedric at schmeits.net
Sun Jan 9 06:05:55 EST 2011


On Jan 9, 7:10 am, aregee <rahul.... at gmail.com> wrote:
> Double Squares
> A double-square number is an integer X which can be expressed as the
> sum of two perfect squares. For example, 10 is a double-square because
> 10 = 32 + 12. Your task in this problem is, given X, determine the
> number of ways in which it can be written as the sum of two squares.
> For example, 10 can only be written as 32 + 12 (we don't count 12 + 32
> as being different). On the other hand, 25 can be written as 52 + 02
> or as 42 + 32.
>
> Input
> You should first read an integer N, the number of test cases. The next
> N lines will contain N values of X.
> Constraints
> 0 ≤ X ≤ 2147483647
> 1 ≤ N ≤ 100
> Output
> For each value of X, you should output the number of ways to write X
> as the sum of two square
>
> Is the code mention below solution to this question ???? what is the
> fault...
> Error :
> aregee at aregee-laptop:~/Desktop$ python pie.py
> enter a number::10
> pie.py:3: Deprecation Warning: integer argument expected, got float
>   for b in range(0,(x**0.5)/2):
>
> #Double square....
>
> x = input("enter a number::")
> for b in range(0,(x**0.5)/2):
>       a = (x-(b**2))**0.5
> try:
>       a = int(a)
> except:
>       print("not an integer")
>       exit(1)
>
>       count = 0;
>       count = count + 1;
> if (x == a**2 + b**2):
>
>       print "double square"
aregee,

The problem you had was that you put a division by 2 in the range, if
x would be 25 than x**0.5 = 5.0 than you would feed range with 2.5 and
than you get the warning. Also I don't understand why you use de
division by 2, because if for instance you would take 25 you get 5 and
0 but you mis 3 and 4 as match. I've put in a tried list to

I would try the following:


#Double square....
x = input("enter a number::")
for b in range(0,int((x**0.5))):
    a = (x-(b**2))**0.5
    try:
        a = int(a)
    except:
        print("not an integer")
        exit(1)

    if a < b:
        # when a is smaller than b we already have this match
        # and all the following matches we also have
        break
    if (x == a**2 + b**2):
        print "double square %s = %s**2 + %s**2" % (x, a, b)



More information about the Python-list mailing list