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

A

aregee

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@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"
 
C

Corey Richardson

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@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):
That says it all. You can't use a float in range(), use int(x ** 0.5) if
that's what you need, but the behavior won't be the same. My suggestion
would be to try to find a different way to do it.
#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)
Here it would be better to use:
if type(a) != int
print("Not an integer")
exit(1)
count = 0;
count = count + 1;
if (x == a**2 + b**2):

print "double square"

~Corey Richardson
 
G

Gary Herron

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.

Huh? In what number system does 10 = 32 + 12?
And how do either 32 or 12 qualify as perfect squares?

Gary Herron
 
O

Owen

Huh?  In what number system does  10 = 32 + 12?
And how do either 32 or 12 qualify as perfect squares?

Gary Herron



Well that he means 3(squared)+1(squared) [3 superscript 2 etc]

Owen
 
I

Ian Kelly

pie.py:3: Deprecation Warning: integer argument expected, got float
for b in range(0,(x**0.5)/2):

I expect you want range(0, int((x / 2) ** 0.5) + 1), no?
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)

Your indentation is confusing. Is the try-except contained inside the
for loop or not?

And what are you actually trying to test for here? The assignment here
of "a = int(a)" will never throw an exception as long as the loop runs.
count = 0;
count = count + 1;

Again, confusing indentation. Is this supposed to be part of the except
block? And what is the purpose of incrementing count if you're going to
set it to 0 immediately before? You might as well just write "count = 1"
if (x == a**2 + b**2):

print "double square"

This also appears to be outside of the loop.
 
C

Cedric Schmeits

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@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)
 
A

aregee

hey all thanks for yr help,i got it right .....n sorry for
confussions...i m very new to python...just started learning it couple
of days ago...
 
A

Alan Mackenzie

aregee said:
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.

There is interesting mathematics involved in "double squares". Such
properties are intimately bound up with the factorisation of the number.

It can be shown that:
(i) a prime number of the form 4n + 1 is a double square in exactly one
way. So is 2. E.g. 73 = 64 + 9, 2 = 1 + 1.

(ii) a prime number of the form 4n + 3 is not a double square.

(iii) The product of m distinct primes, each of the form 4n + 1, is a
double square in 2^(m-1) ways. E.g. 5*13 = 65 = 64 + 1 = 49 + 16

(iv) If k = a^2 + b^2, l = c^2 + d^2, then:
kl = (ac + bd)^2 + (ad - bc)^2
= (ac - bd)^2 + (ad + bc)^2.

(v) if k is a prime of the form 4n + 1, then k^m is a double square in
(m + 2) / 2 ways. E.g. 5^4 = 625 = 625 + 0 = 576 + 49 = 400 + 225.

(vi) .... and so on.

It's all in the factorisation!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,898
Latest member
BlairH7607

Latest Threads

Top