|
|
A245907
|
|
Let D = {d(n,i)}, i = 1..q, denote the set of divisors of n; then a(n) = number of multiplicative groups G(n,p) = D/kZ, 1 < k < n.
|
|
1
|
|
|
0, 1, 1, 3, 0, 4, 3, 3, 1, 7, 2, 7, 1, 3, 4, 8, 1, 11, 2, 3, 2, 9, 2, 7, 1, 9, 2, 15, 0, 13, 7, 3, 1, 7, 2, 11, 3, 3, 2, 19, 1, 15, 2, 5, 2, 11, 2, 13, 1, 3, 3, 15, 2, 7, 4, 5, 2, 15, 1, 15, 1, 6, 8, 7, 1, 15, 5, 3, 1, 29, 3, 14, 2, 5, 4, 9, 2, 23, 3, 13, 1, 15
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
OFFSET
|
2,4
|
|
COMMENTS
|
We introduce the structure of a finite group in order to study the divisors of each integer.
We see that the study of the classification of the divisors is dependent on the values k. The trivial group {1} is counted.
The principle of the algorithm is to compute all the products d(n,i)/kZ * d(n,j)/kZ and also the inverse of each element such that if x is in the group, then there exists x’ in the group with x*x’ = 1.
An interesting property: a(n)= 0 for n = 2, 6, 30, 186, 366, 426, 606, 786, 1266, 1446, 1626, 1686, ... where n>30 is of the form n = 6*q with q prime of the form (10*k + 1) => q = 31, 61, 71, 101, 131, 211, 241, 271, 281, 311, 421, 491, ...
a(n) = 1 for n = 3, 4, 10, 14, 18, 26, 34, 42, 50, 60, 62, 66, ...
|
|
LINKS
|
|
|
EXAMPLE
|
a(133) = 11 because there exist eleven finite groups formed from the four divisors {1,7,19,133} of 133. The eleven finite groups G(133,p) are:
G(133,2) = {1}
G(133,3} = {1}
G(133,4} = {1,3}
G(133,5} = {1,2,3,4}
G(133,6} = {1}
G(133,8} = {1,3,5,7}
G(133,10} = {1,3,7,9}
G(133,12} = {1,7}
G(133,15} = {1,4,7,13}
G(133,24} = {1,7,13,19}
G(133,30} = {1,7,13,19}
|
|
MAPLE
|
with(numtheory):
for n from 2 to 100 do:
x:=divisors(n):n1:=nops(x):ind:=0:
for p from 2 to n-1 do:
lst:={}:
for i from 1 to n1 do:
lst:=lst union {irem(x[i], p)}:
od:
n2:=nops(lst):lst1:={}:
for a from 1 to n2 do:
for b from 1 to n2 do:
lst1:=lst1 union {irem(lst[a]*lst[b], p)}:
od:
od:
if lst1=lst
then
n3:=nops(lst1):lst2:={}:
for c from 1 to n3 do:
for d from 1 to n3 do:
if irem(lst1[c]*lst1[d], p)=1
then lst2:=lst2 union {lst1[c]}:
else
fi:
od:
od:
if lst2=lst
then
ind:=ind+1:
else
fi:
fi:
od:
printf(`%d, `, ind):
od:
|
|
CROSSREFS
|
|
|
KEYWORD
|
nonn
|
|
AUTHOR
|
|
|
STATUS
|
approved
|
|
|
|