cyclotomic_polynomials_expansion_native.sf 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/usr/bin/ruby
  2. # Expansion of cyclotomic polynomials.
  3. # See also:
  4. # https://rosettacode.org/wiki/Cyclotomic_Polynomial
  5. # https://en.wikipedia.org/wiki/Cyclotomic_polynomial
  6. # https://metacpan.org/pod/Math::Polynomial
  7. func cyclotomic(n) is cached {
  8. var x = Poly(n, 1)-1
  9. return x if (n == 1)
  10. var y = n.divisors.grep { _ < n }.prod {|d| __FUNC__(d) }
  11. x / y
  12. }
  13. say "First 30 cyclotomic polynomials:"
  14. for k in (1..30) {
  15. say ("Φ(#{k}) = ", cyclotomic(k))
  16. }
  17. __END__
  18. First 30 cyclotomic polynomials:
  19. Φ(1) = x - 1
  20. Φ(2) = x + 1
  21. Φ(3) = x^2 + x + 1
  22. Φ(4) = x^2 + 1
  23. Φ(5) = x^4 + x^3 + x^2 + x + 1
  24. Φ(6) = x^2 - x + 1
  25. Φ(7) = x^6 + x^5 + x^4 + x^3 + x^2 + x + 1
  26. Φ(8) = x^4 + 1
  27. Φ(9) = x^6 + x^3 + 1
  28. Φ(10) = x^4 - x^3 + x^2 - x + 1
  29. Φ(11) = x^10 + x^9 + x^8 + x^7 + x^6 + x^5 + x^4 + x^3 + x^2 + x + 1
  30. Φ(12) = x^4 - x^2 + 1
  31. Φ(13) = x^12 + x^11 + x^10 + x^9 + x^8 + x^7 + x^6 + x^5 + x^4 + x^3 + x^2 + x + 1
  32. Φ(14) = x^6 - x^5 + x^4 - x^3 + x^2 - x + 1
  33. Φ(15) = x^8 - x^7 + x^5 - x^4 + x^3 - x + 1
  34. Φ(16) = x^8 + 1
  35. Φ(17) = x^16 + x^15 + x^14 + x^13 + x^12 + x^11 + x^10 + x^9 + x^8 + x^7 + x^6 + x^5 + x^4 + x^3 + x^2 + x + 1
  36. Φ(18) = x^6 - x^3 + 1
  37. Φ(19) = x^18 + x^17 + x^16 + x^15 + x^14 + x^13 + x^12 + x^11 + x^10 + x^9 + x^8 + x^7 + x^6 + x^5 + x^4 + x^3 + x^2 + x + 1
  38. Φ(20) = x^8 - x^6 + x^4 - x^2 + 1
  39. Φ(21) = x^12 - x^11 + x^9 - x^8 + x^6 - x^4 + x^3 - x + 1
  40. Φ(22) = x^10 - x^9 + x^8 - x^7 + x^6 - x^5 + x^4 - x^3 + x^2 - x + 1
  41. Φ(23) = x^22 + x^21 + x^20 + x^19 + x^18 + x^17 + x^16 + x^15 + x^14 + x^13 + x^12 + x^11 + x^10 + x^9 + x^8 + x^7 + x^6 + x^5 + x^4 + x^3 + x^2 + x + 1
  42. Φ(24) = x^8 - x^4 + 1
  43. Φ(25) = x^20 + x^15 + x^10 + x^5 + 1
  44. Φ(26) = x^12 - x^11 + x^10 - x^9 + x^8 - x^7 + x^6 - x^5 + x^4 - x^3 + x^2 - x + 1
  45. Φ(27) = x^18 + x^9 + 1
  46. Φ(28) = x^12 - x^10 + x^8 - x^6 + x^4 - x^2 + 1
  47. Φ(29) = x^28 + x^27 + x^26 + x^25 + x^24 + x^23 + x^22 + x^21 + x^20 + x^19 + x^18 + x^17 + x^16 + x^15 + x^14 + x^13 + x^12 + x^11 + x^10 + x^9 + x^8 + x^7 + x^6 + x^5 + x^4 + x^3 + x^2 + x + 1
  48. Φ(30) = x^8 + x^7 - x^5 - x^4 - x^3 + x + 1