33 typedef typename compositor_t::function function_t;
38 199203677, 779234623, 843093203, 883543291, 1197162971,
39 1282615157, 1552390397, 1765737859, 1878769589, 1993904873,
40 2257133471, 2520523529, 2579094799, 2853450949, 2935025369,
41 3095780533, 3164132249, 3408963511, 4260042859, 4608613981,
42 4654875857, 5085931997, 7278175081, 7289187463, 9206112101
47 symbol_table_t symbol_table;
49 symbol_table.add_vector (
"composites", composites);
50 symbol_table.add_function(
"println" , println );
52 compositor_t compositor(symbol_table);
54 compositor.add(function_t()
70 compositor.add(function_t()
79 " while (gcd(n, a2 - a1) == 1) "
81 " /* The Tortoise */ "
82 " a1 := (a1^2 + c) % n; "
85 " a2 := (a2^2 + c) % n; "
86 " a2 := (a2^2 + c) % n; "
89 " var g := gcd(n, a2 - a1); "
94 const std::string factorize_composites_program =
95 " for (var i := 0; i < composites[]; i += 1) "
97 " var n := composites[i]; "
98 " var factor0 := pollard_rho(n); "
99 " var factor1 := n / factor0; "
101 " if ((factor0 * factor1 == n) and (factor0 != 1)) "
103 " println('n: ', n, ' factors: { ', factor0 ,' , ', factor1 ,' } '); "
107 " println('failed to factorize ', n); "
111 expression_t expression;
112 expression.register_symbol_table(symbol_table);
115 parser.compile(factorize_composites_program,expression);