35 lines
827 B
Python
35 lines
827 B
Python
#!/usr/bin/env sage -python
|
|
from sage.all import EllipticCurve
|
|
|
|
from demo_package import greet
|
|
|
|
|
|
def describe_curve() -> None:
|
|
"""Construct an elliptic curve and print basic arithmetic information."""
|
|
E = EllipticCurve([0, 0, 0, -1, 1]) # y^2 = x^3 - x + 1
|
|
print(f"Elliptic curve E: {E}")
|
|
print(f"Discriminant: {E.discriminant()}")
|
|
print(f"j-invariant: {E.j_invariant()}")
|
|
|
|
rank = E.rank()
|
|
print(f"Rank: {rank}")
|
|
|
|
generators = E.gens()
|
|
if generators:
|
|
P = generators[0]
|
|
print(f"Generator: {P}")
|
|
for n in range(1, 6):
|
|
multiple = n * P
|
|
print(f"{n} * P = {multiple}")
|
|
else:
|
|
print("Curve has no generators over Q.")
|
|
|
|
|
|
def main() -> None:
|
|
print(greet("Sage enthusiast"))
|
|
describe_curve()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|