ほぼpythonと同じ構文と考えておけばよいです。
100未満の素数を出力する
sage: x = 1 sage: while x < 100: ....: if x.is_prime(): ....: print(x) ....: x = x + 1 ....: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
プログラムをファイルに書きそれを実行する。
$ sage ./a.sage
, のqが1000未満の素数で、有理点の数が素数になるもののリストを求める。
i = 11 while i < 1000: if i.is_prime(): E = EllipticCurve(GF(i), [0, 7]) p = E.cardinality() if p.is_prime(): print i, p i = i + 1
13 7 43 31 61 61 -> anomalous 67 79 79 67 97 79 127 127 -> anomalous 163 139 211 199 349 313 397 397 -> anomalous 433 397 547 547 -> anomalous 577 613 733 691 823 829 907 967 967 907 991 1009
ちなみにここでq = #Eになっているものがありますが、この時anomalous曲線と呼ばれています。
anomalous曲線のDLP問題は、SSSA攻撃という攻撃方法に弱いことが知られています。
anomalous曲線のフロベニウストレースは1です。
参考
http://fe.math.kobe-u.ac.jp/MathLibre-doc/ponpoko/sage_for_newbies_ja.pdf