Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > compute the double square...... :(

Reply
Thread Tools

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

 
 
aregee
Guest
Posts: n/a
 
      01-09-2011

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"
 
Reply With Quote
 
 
 
 
Corey Richardson
Guest
Posts: n/a
 
      01-09-2011
On 01/09/2011 01:10 AM, aregee 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@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
 
Reply With Quote
 
 
 
 
Gary Herron
Guest
Posts: n/a
 
      01-09-2011
On 01/08/2011 10:10 PM, aregee 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.


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

Gary Herron



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



 
Reply With Quote
 
Owen
Guest
Posts: n/a
 
      01-09-2011
On Jan 9, 6:14*pm, Gary Herron <(E-Mail Removed)> wrote:
> On 01/08/2011 10:10 PM, aregee 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.

>
> Huh? *In what number system does *10 = 32 + 12?
> And how do either 32 or 12 qualify as perfect squares?
>
> Gary Herron
>
>
>
>
>
>
>
> > 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"




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

Owen
 
Reply With Quote
 
Ian Kelly
Guest
Posts: n/a
 
      01-09-2011
On 1/8/2011 11:10 PM, aregee wrote:
> 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.

 
Reply With Quote
 
Cedric Schmeits
Guest
Posts: n/a
 
      01-09-2011
On Jan 9, 7:10*am, aregee <(E-Mail Removed)> 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@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)
 
Reply With Quote
 
aregee
Guest
Posts: n/a
 
      01-09-2011
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...

Ian Kelly wrote:
> On 1/8/2011 11:10 PM, aregee wrote:
> > 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.

 
Reply With Quote
 
Alan Mackenzie
Guest
Posts: n/a
 
      01-09-2011
aregee <(E-Mail Removed)> 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.


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!

--
Alan Mackenzie (Nuremberg, Germany).

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
FAQ 4.43 How do I compute the difference of two arrays? How do I compute the intersection of two arrays? PerlFAQ Server Perl Misc 0 02-02-2011 05:00 AM
cannot convert parameter from 'double (double)' to 'double (__cdecl *)(double)' error Sydex C++ 12 02-17-2005 06:30 PM
System.Web.HttpException: Cannot compute Count for a data source t =?Utf-8?B?UGF0cmljay5PLklnZQ==?= ASP .Net 4 11-05-2004 02:00 AM
Problem using COMPUTE with SPROC on ASP Application =?Utf-8?B?c2tpcmtieQ==?= ASP .Net 1 11-01-2004 12:55 PM
How to compute 2^N in VHDL? Fabio G. VHDL 3 05-31-2004 06:55 PM



Advertisments