aks_test_for_primes.sf 552 B

1234567891011121314151617181920212223242526
  1. #!/usr/bin/ruby
  2. func binprime(p) {
  3. p >= 2 || return false;
  4. range(1, p>>1).each { |i|
  5. (binomial(p, i) % p) && return false;
  6. };
  7. return true;
  8. }
  9. func coef(n, e) {
  10. (e == 0) && return "#{n}";
  11. (n == 1) && (n = "");
  12. (e == 1) ? "#{n}x" : "#{n}x^#{e}";
  13. }
  14. func binpoly(p) {
  15. join(" ", coef(1, p), p.range.reverse.map {|i|
  16. join(" ", %w(+ -)[(p-i)&1], coef(binomial(p, i), i));
  17. }...);
  18. }
  19. say "expansions of (x-1)^p:";
  20. 10.range.each { |i| say binpoly(i) };
  21. say "Primes to 80: [#{(2..80).grep { binprime(_) }}]";