欧几里得算法可视化

欧几里得算法可视化
几何画板及绘图内容加载中,请稍等……
2019-11-06 00:55
①本范例演示欧几里得算法的执行过程与几何表示;②涉及核心数学概念包括整除、最大公约数、几何构造;③作图要点:使用Min、Polygon、Midpoint、If等GeoGebra命令和对象a、b、A、scale、D、B、C等构建几何图形与动画;④适合高中数学教学,用于理解算法的几何意义和整数性质。

GeoGebra 命令及参数

  1. Min(5 / a, 5 / b) → scale
  2. Polygon(C, D, B, A) → q1, c, d, b_1, a_1
  3. Midpoint(C, A) → E
  4. Midpoint(B, A) → F
  5. Min(a, b) → s1
  6. If(a > b, (floor(a / s1) * s1), 0) → ss2a
  7. If(b > a, (floor(b / s1) * s1), 0) → ss2b
  8. If(a > b, a - s2, (s2 * ns2)) → ss3a
  9. If(b > a, b - s2, (s2 * ns2)) → ss3b
  10. If(b > a, Min[a - (s2 * ns2), s2], Min[b - (s2 * ns2), s2]) → s3
  11. If(b > a, (s1 * ns1) + (s3 * ns3), (s2 * ns2)) → ss4b
  12. If(b > a, (s2 * ns2), (s1 * ns1) + (s3 * ns3)) → ss4a
  13. If(b > a, (s2 * ns2) + (s4 * ns4), (s1 * ns1) + (s3 * ns3)) → ss5a
  14. If(b > a, (s1 * ns1) + (s3 * ns3), (s2 * ns2) + (s4 * ns4)) → ss5b
  15. If(b > a, (s2 * ns2) + (s4 * ns4), (s1 * ns1) + (s3 * ns3) + (s5 * ns5)) → ss6a
  16. If(b > a, (s1 * ns1) + (s3 * ns3) + (s5 * ns5), (s2 * ns2) + (s4 * ns4)) → ss6b
  17. If(b ≥ a, Sequence[Polygon[((m * scale), (ss4b * scale)), ((m * scale) + (s4 * scale), (ss4b * scale)), 4], m, ss4a, (s4 * (ns4 - 1)) + ss4a, s4], Sequence[Polygon[((ss4a * scale), (m * scale)), ((ss4a * scale) + (s4 * scale), (m * scale)), 4], m, ss4b, (s4 * (ns4 - 1)) + ss4b, s4]) → sequence4
  18. If(b ≥ a, Sequence[Polygon[((ss5a * scale), (m * scale)), ((ss5a * scale) + (s5 * scale), (m * scale)), 4], m, ss5b, (s5 * (ns5 - 1)) + ss5b, s5], Sequence[Polygon[((m * scale), (ss5b * scale)), ((m * scale) + (s5 * scale), (ss5b * scale)), 4], m, ss5a, (s5 * (ns5 - 1)) + ss5a, s5]) → sequence5
  19. If(b ≥ a, Sequence[Polygon[(0, (m * scale)), ((s1 * scale), (m * scale)), 4], m, 0, (s1 * (ns1 - 1)), s1], Sequence[Polygon[((m * scale) + (s1 * scale), 0), ((m * scale) + (s1 * scale), (s1 * scale)), 4], m, 0, (s1 * (ns1 - 1)), s1]) → sequence1
  20. If(b ≥ a, Sequence[Polygon[((m * scale), (ss2b * scale)), ((m * scale) + (s2 * scale), (ss2b * scale)), 4], m, 0, (s2 * (ns2 - 1)), s2], Sequence[Polygon[((ss2a * scale), (m * scale)), ((ss2a * scale) + (s2 * scale), (m * scale)), 4], m, 0, (s2 * (ns2 - 1)), s2]) → sequence2
  21. If(b ≥ a, Sequence[Polygon[((ss3a * scale), (m * scale)), ((ss3a * scale) + (s3 * scale), (m * scale)), 4], m, ss3b, (s3 * (ns3 - 1)) + ss3b, s3], Sequence[Polygon[((m * scale), (ss3b * scale)), ((m * scale) + (s3 * scale), (ss3b * scale)), 4], m, ss3a, (s3 * (ns3 - 1)) + ss3a, s3]) → sequence3
  22. If(b > a, (s2 * ns2) + (s4 * ns4) + (s6 * ns6), (s1 * ns1) + (s3 * ns3) + (s5 * ns5)) → ss7a
  23. If(b > a, (s1 * ns1) + (s3 * ns3) + (s5 * ns5), (s2 * ns2) + (s4 * ns4) + (s6 * ns6)) → ss7b
  24. If(b ≥ a, Sequence[Polygon[((ss7a * scale), (m * scale)), ((ss7a * scale) + (s7 * scale), (m * scale)), 4], m, ss7b, (s7 * (ns7 - 1)) + ss7b, s7], Sequence[Polygon[((m * scale), (ss7b * scale)), ((m * scale) + (s7 * scale), (ss7b * scale)), 4], m, ss7a, (s7 * (ns7 - 1)) + ss7a, s7]) → sequence7
  25. If(b ≥ a, Sequence[Polygon[((m * scale), (ss6b * scale)), ((m * scale) + (s6 * scale), (ss6b * scale)), 4], m, ss6a, (s6 * (ns6 - 1)) + ss6a, s6], Sequence[Polygon[((ss6a * scale), (m * scale)), ((ss6a * scale) + (s6 * scale), (m * scale)), 4], m, ss6b, (s6 * (ns6 - 1)) + ss6b, s6]) → sequence6
  26. If(b > a, (s2 * ns2) + (s4 * ns4) + (s6 * ns6), (s1 * ns1) + (s3 * ns3) + (s5 * ns5) + (s7 * ns7)) → ss8a
  27. If(b > a, (s1 * ns1) + (s3 * ns3) + (s5 * ns5) + (s7 * ns7), (s2 * ns2) + (s4 * ns4) + (s6 * ns6)) → ss8b
  28. If(b ≥ a, Sequence[Polygon[((m * scale), (ss8b * scale)), ((m * scale) + (s8 * scale), (ss8b * scale)), 4], m, ss8a, (s8 * (ns8 - 1)) + ss8a, s8], Sequence[Polygon[((ss8a * scale), (m * scale)), ((ss8a * scale) + (s8 * scale), (m * scale)), 4], m, ss8b, (s8 * (ns8 - 1)) + ss8b, s8]) → sequence8
  29. If(b > a, (s2 * ns2) + (s4 * ns4) + (s6 * ns6) + (s8 * ns8), (s1 * ns1) + (s3 * ns3) + (s5 * ns5) + (s7 * ns7)) → ss9a
  30. If(b > a, (s1 * ns1) + (s3 * ns3) + (s5 * ns5) + (s7 * ns7), (s2 * ns2) + (s4 * ns4) + (s6 * ns6) + (s8 * ns8)) → ss9b
  31. If(b ≥ a, Sequence[Polygon[((ss9a * scale), (m * scale)), ((ss9a * scale) + (s7 * scale), (m * scale)), 4], m, ss9b, (s9 * (ns9 - 1)) + ss9b, s9], Sequence[Polygon[((m * scale), (ss9b * scale)), ((m * scale) + (s9 * scale), (ss9b * scale)), 4], m, ss9a, (s9 * (ns9 - 1)) + ss9a, s9]) → sequence9