251
251
#
252
252
# Magma code:
253
253
# [Maximum(&cat[ EulerPhiInverse(d) : d in Divisors(n) | #EulerPhiInverse(d) ne 0 ]) : n in [1..250]];
254
+ # Hecke
255
+ # [ maximum(vcat([euler_phi_inv(d) for d in divisors(n)]...)) for n in 1:250]
254
256
const _euler_phi_inverse_maximum =
255
257
[ 2 , 6 , 2 , 12 , 2 , 18 , 2 , 30 , 2 , 22 , 2 , 42 , 2 , 6 , 2 , 60 , 2 , 54 , 2 , 66 , 2 , 46 , 2 ,
256
258
90 , 2 , 6 , 2 , 58 , 2 , 62 , 2 , 120 , 2 , 6 , 2 , 126 , 2 , 6 , 2 , 150 , 2 , 98 , 2 , 138 , 2 ,
@@ -265,14 +267,19 @@ const _euler_phi_inverse_maximum =
265
267
2 , 6 , 2 , 810 , 2 , 6 , 2 , 726 , 2 , 446 , 2 , 870 , 2 , 454 , 2 , 458 , 2 , 94 , 2 , 708 , 2 ,
266
268
158 , 2 , 12 , 2 , 478 , 2 , 1050 , 2 , 46 , 2 , 12 , 2 , 166 , 2 , 30 , 2 , 502 ]
267
269
270
+ #
271
+
268
272
# One should/could also try to be closer to Algorithm 1
269
273
# in Molin, "On the calculation of roots of unity in a number field"
270
274
function _torsion_group_order_divisor (K:: AbsSimpleNumField )
271
-
272
275
if degree (K) <= 250
273
276
upper_bound = _euler_phi_inverse_maximum[degree (K)]
274
277
else
275
- error (" Not implemented yet" )
278
+ l = 0
279
+ for d in divisors (degree (K))
280
+ l = maximum (euler_phi_inv (d); init = l)
281
+ end
282
+ upper_bound = l
276
283
end
277
284
278
285
p = upper_bound + 1
@@ -342,7 +349,11 @@ function _torsion_group_order_divisor(K::NumField)
342
349
if absolute_degree (K) <= 250
343
350
upper_bound = _euler_phi_inverse_maximum[absolute_degree (K)]
344
351
else
345
- error (" Not implemented yet" )
352
+ l = 0
353
+ for d in divisors (absolute_degree (K))
354
+ l = maximum (euler_phi_inv (d); init = l)
355
+ end
356
+ upper_bound = l
346
357
end
347
358
348
359
p = upper_bound + 1
0 commit comments