33 typedef typename compositor_t::function function_t;
38 199203677, 779234623, 843093203, 883543291, 1197162971, 1282615157, 1368190717,
39 1552390397, 1765737859, 1800091571, 1878769589, 1993904873, 2257133471, 2520523529,
40 2579094799, 2853450949, 2935025369, 3095780533, 3164132249, 3408963511, 4260042859,
41 4608613981, 4654875857, 5085931997, 6064982771, 7278175081, 7289187463, 9206112101
46 symbol_table_t symbol_table;
48 symbol_table.add_vector (
"composites", composites);
49 symbol_table.add_function(
"println" , println );
51 compositor_t compositor(symbol_table);
53 compositor.add(function_t()
59 " var t := trunc(s); "
63 compositor.add(function_t()
72 " else if ((n % 2) == 0) "
77 " var a := ceil(sqrt(n)); "
79 " while (not(is_square(a^2 - n))) "
84 " var b := sqrt(a^2 - n); "
89 const std::string factorize_composites_program =
90 " for (var i := 0; i < composites[]; i += 1) "
92 " var n := composites[i]; "
93 " var factor0 := fermat(n); "
94 " var factor1 := n / factor0; "
96 " if ((factor0 * factor1 == n) and (factor0 != 1)) "
98 " println('n: ', n, ' factors: { ', factor0 ,' , ', factor1 ,' } '); "
102 " println('failed to factorize ', n); "
106 expression_t expression;
107 expression.register_symbol_table(symbol_table);
110 parser.compile(factorize_composites_program,expression);