123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #!/usr/bin/ruby
- # Author: Daniel "Trizen" Șuteu
- # Date: 22 May 2018
- # https://github.com/trizen
- # A new algorithm for computing the Euler numbers.
- # See also:
- # https://oeis.org/A122045
- # https://en.wikipedia.org/wiki/Euler_number
- func euler_numbers(n) {
- var E = [1]
- for i in (1 .. n) {
- for k in (0 ..^ i) {
- E[i] := 0 -= (E[k] / (2*(i-k))!)
- }
- }
- E.map_kv { |k,v| v * (2*k)! }
- }
- var E = euler_numbers(20) # first 20 Euler numbers at even indices
- for k,v in (E.kv) {
- say "E(#{2*k}) = #{v}"
- }
- __END__
- E(0) = 1
- E(2) = -1
- E(4) = 5
- E(6) = -61
- E(8) = 1385
- E(10) = -50521
- E(12) = 2702765
- E(14) = -199360981
- E(16) = 19391512145
- E(18) = -2404879675441
- E(20) = 370371188237525
- E(22) = -69348874393137901
- E(24) = 15514534163557086905
- E(26) = -4087072509293123892361
- E(28) = 1252259641403629865468285
- E(30) = -441543893249023104553682821
- E(32) = 177519391579539289436664789665
- E(34) = -80723299235887898062168247453281
- E(36) = 41222060339517702122347079671259045
- E(38) = -23489580527043108252017828576198947741
- E(40) = 14851150718114980017877156781405826684425
|