You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
2.8 KiB

  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 1,
  6. "id": "f890e69f",
  7. "metadata": {},
  8. "outputs": [],
  9. "source": [
  10. "q = pow(2,255) - 19"
  11. ]
  12. },
  13. {
  14. "cell_type": "code",
  15. "execution_count": 2,
  16. "id": "d90a7f0b",
  17. "metadata": {},
  18. "outputs": [],
  19. "source": [
  20. "A = 486662\n",
  21. "B = 1"
  22. ]
  23. },
  24. {
  25. "cell_type": "code",
  26. "execution_count": 3,
  27. "id": "1b2aebc5",
  28. "metadata": {},
  29. "outputs": [
  30. {
  31. "name": "stdout",
  32. "output_type": "stream",
  33. "text": [
  34. "486664\n",
  35. "486660\n"
  36. ]
  37. }
  38. ],
  39. "source": [
  40. "a = (A + 2) * 1\n",
  41. "d = (A - 2) * 1\n",
  42. "print(a)\n",
  43. "print(d)"
  44. ]
  45. },
  46. {
  47. "cell_type": "code",
  48. "execution_count": 4,
  49. "id": "aae2f8bf",
  50. "metadata": {},
  51. "outputs": [
  52. {
  53. "data": {
  54. "text/plain": [
  55. "9"
  56. ]
  57. },
  58. "execution_count": 4,
  59. "metadata": {},
  60. "output_type": "execute_result"
  61. }
  62. ],
  63. "source": [
  64. "u = 9\n",
  65. "u"
  66. ]
  67. },
  68. {
  69. "cell_type": "code",
  70. "execution_count": 5,
  71. "id": "ea9a4d90",
  72. "metadata": {},
  73. "outputs": [
  74. {
  75. "data": {
  76. "text/plain": [
  77. "14781619447589544791020593568409986887264606134616475288964881837755586237401"
  78. ]
  79. },
  80. "execution_count": 5,
  81. "metadata": {},
  82. "output_type": "execute_result"
  83. }
  84. ],
  85. "source": [
  86. "v = mod(u^3 + A * u^2 + u, q).sqrt()\n",
  87. "v"
  88. ]
  89. },
  90. {
  91. "cell_type": "code",
  92. "execution_count": 6,
  93. "id": "95895004",
  94. "metadata": {},
  95. "outputs": [
  96. {
  97. "data": {
  98. "text/plain": [
  99. "38213832894368730265794714087330135568483813637251082400757400312561599933396"
  100. ]
  101. },
  102. "execution_count": 6,
  103. "metadata": {},
  104. "output_type": "execute_result"
  105. }
  106. ],
  107. "source": [
  108. "u * pow(v, -1, q) % q"
  109. ]
  110. },
  111. {
  112. "cell_type": "code",
  113. "execution_count": 7,
  114. "id": "1134cf74",
  115. "metadata": {},
  116. "outputs": [
  117. {
  118. "data": {
  119. "text/plain": [
  120. "46316835694926478169428394003475163141307993866256225615783033603165251855960"
  121. ]
  122. },
  123. "execution_count": 7,
  124. "metadata": {},
  125. "output_type": "execute_result"
  126. }
  127. ],
  128. "source": [
  129. "(u - 1) * pow(u + 1, -1, q) % q"
  130. ]
  131. },
  132. {
  133. "cell_type": "code",
  134. "execution_count": null,
  135. "id": "ec089e21",
  136. "metadata": {},
  137. "outputs": [],
  138. "source": []
  139. }
  140. ],
  141. "metadata": {
  142. "kernelspec": {
  143. "display_name": "SageMath 9.2",
  144. "language": "sage",
  145. "name": "sagemath"
  146. },
  147. "language_info": {
  148. "codemirror_mode": {
  149. "name": "ipython",
  150. "version": 3
  151. },
  152. "file_extension": ".py",
  153. "mimetype": "text/x-python",
  154. "name": "python",
  155. "nbconvert_exporter": "python",
  156. "pygments_lexer": "ipython3",
  157. "version": "3.9.7"
  158. }
  159. },
  160. "nbformat": 4,
  161. "nbformat_minor": 5
  162. }