/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 0.8.1 ] */ /* [wxMaxima: section start ] The Sieve of Eratosthenes for finding square roots [wxMaxima: section end ] */ /* [wxMaxima: comment start ] Reference: J. Ziegenbalg: Algorithmen von Hammurapi bis Gödel, Verlag Harri Deutsch, Frankfurt a.M. 2007, section 3.2.3 [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ Eratosthenes_array(UpperLimit) := block([EL, EA, i, k, UpLimA], UpLimA : UpperLimit+1, EA : make_array(fixnum, UpLimA), fillarray(EA, makelist(j, j, 0, UpLimA)), EA[1] : 0, i : 2, while i*i <= UpperLimit do (k : i+i, while k <= UpperLimit do (EA[k] : 0, k : k+i), i : i+1), EL : delete(0, listarray(EA)), EL ); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Eratosthenes_array(10000); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Eratosthenes_List(UpperLimit) := block([E, i, k], E : makelist(j, j, 1, UpperLimit), E[1] : 0, i : 2, while i*i <= UpperLimit do (k : i+i, while k <= UpperLimit do (E[k] : 0, k : k+i), i : i+1), E : delete(0, E), E); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Eratosthenes_List(10000); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Eratosthenes_SubList(UpperLimit) := /* for avoiding the destructive delete-command */ block([E, i, k], E : makelist(j, j, 1, UpperLimit), E[1] : 0, i : 2, while i*i <= UpperLimit do (k : i+i, while k <= UpperLimit do (E[k] : 0, k : k+i), i : i+1), sublist(E, lambda([x], not(is(x=0)))) ); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Eratosthenes_SubList(10000); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Some Tests regarding equality [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ 2+3=5; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ is(2+3=5); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ is(lambda([x], not(x=0))(2)) /* the "non-zero"-predicate */; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ E1: [0,1,0,2,0,0,3,0,0,0,4,0,0,0]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sublist(E1, lambda([x], not(is(x=0)))); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ functions; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ timer(all); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ timer; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ timer_info(); /* [wxMaxima: input end ] */ /* Maxima can't load/batch files which end with a comment! */ "Created with wxMaxima"$