Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

There is a difference between Sage and Python (2.x) concerning the division operator / . In Python 2.x the operator / returns the floor of the result of division if the operands are integers (Python ints). In Sage the operator / returns the result as rational number (if so) if the operands are Sage integers. The Python function range returns a list of Python integers. In your nested for loops all operands are Python ints, so you get the floor of the division result. In your second code example N (and therefor n) is an Sage integer, so you get the rational numbers as result.

The Sage function srange returns a list of Sage integers. With srange(N,N+1) in your first code n becomes a Sage integer.

You can see the difference by placing some print type(k) and print type(n) commands inside the loops.