###
# [1] op_mode = "list" : list of all.
# = "pow1" : list up only pow=1
# = "nearMod" : list of pow nearest v_mod.
#
###
makePowList = function(v_base = 2, v_mod = 61, v_listDepth = v_mod, op_mode = "list"){
#
ds_ret = c(TRUE)
ds_errmsg = c("")
#
####
ds_v_base = c()
ds_v_mod = c()
#
ds_num = c()
ds_pow = c()
ds_powDiffMod = c()
#
###
ds_v_base[1] = v_base
ds_v_mod[1] = v_mod
###
ds_num[1] = 0
ds_pow[1] = 1
ds_powDiffMod[1] = (v_mod - ds_pow[1])
###
for(i in 2:v_listDepth){
#
ds_num[i] = i - 1
ds_pow[i] = (v_base * ds_pow[i - 1]) %% v_mod
#
ds_powDiffMod[i] = v_mod - ds_pow[i]
#
}
#
###
# for op_mode = "list".
ds_out = data.frame(v_base=ds_v_base, v_mod=ds_v_mod,
num
=ds_num
, pow=ds_pow
, powDiffMod
=ds_powDiffMod
) #return(ds_out)
if(op_mode == "list") return(ds_out)
###
# for op_mode = "pow1".
retSubsetPow1 = subset(ds_out, subset = (ds_out$pow == 1))
#return(retSubsetPow1)
if(op_mode == "pow1") return(retSubsetPow1)
###
# for op_mode = "nearMod".
ds_outSortedDiff = ds_out[order(ds_out$powDiffMod), ]
#return(ds_outSortedDiff)
if(op_mode == "nearMod") return(ds_outSortedDiff)
###
###
ds_out = data.frame(ret=ds_ret, errmsg=ds_errmsg)
#
return(ds_out)
}
####
### @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
### @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
### @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
### @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
### @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
### @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
### @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
v_base = 2
#v_base = 3
#v_base = 4
#v_base = 5
#v_base = 6
#v_base = 7
#v_base = 8
#v_base = 9
#v_base = 10
#v_base = 11
#v_base = 12
#v_base = 13
#v_base = 14
#v_base = 15
###
v_mod = 8911
#v_mod = 61
###
#op_mode = "list"
op_mode = "pow1"
#op_mode = "nearMod"
###
makePowList(v_base, v_mod, v_mod, op_mode)
###
###
#makePowList(v_base = 2, v_mod = 61, op_mode = "list")
#makePowList(v_base = 2, v_mod = 61, op_mode = "pow1")
#makePowList(v_base = 2, v_mod = 61, op_mode = "nearMod")
###
###
# [v_base=2, v_mod=61, op_mode="list"]
# num pow
# 1 0 1
# 2 1 2
# 3 2 4
# 4 3 8
# 5 4 16
# 6 5 32
# 7 6 3
# 8 7 6
# 9 8 12
# 10 9 24
# 11 10 48
# 12 11 35
# 13 12 9
# 14 13 18
# 15 14 36
# 16 15 11
# 17 16 22
# 18 17 44
# 19 18 27
# 20 19 54
# 21 20 47
# 22 21 33
# 23 22 5
# 24 23 10
# 25 24 20
# 26 25 40
# 27 26 19
# 28 27 38
# 29 28 15
# 30 29 30
# 31 30 60
# 32 31 59
# 33 32 57
# 34 33 53
# 35 34 45
# 36 35 29
# 37 36 58
# 38 37 55
# 39 38 49
# 40 39 37
# 41 40 13
# 42 41 26
# 43 42 52
# 44 43 43
# 45 44 25
# 46 45 50
# 47 46 39
# 48 47 17
# 49 48 34
# 50 49 7
# 51 50 14
# 52 51 28
# 53 52 56
# 54 53 51
# 55 54 41
# 56 55 21
# 57 56 42
# 58 57 23
# 59 58 46
# 60 59 31
# 61 60 1
###
# [v_base=2, v_mod=61, op_mode="pow1"]
# num pow powDiffMod
# 1 0 1 60
# 61 60 1 60
###
# [v_base=2, v_mod=61, op_mode="nearMod"]
# num pow powDiffMod
# 31 30 60 1
# 32 31 59 2
# 37 36 58 3
# 33 32 57 4
# 53 52 56 5
# 38 37 55 6
# 20 19 54 7
# 34 33 53 8
# 43 42 52 9
# 54 53 51 10
# 46 45 50 11
# 39 38 49 12
# 11 10 48 13
# 21 20 47 14
# 59 58 46 15
# 35 34 45 16
# 18 17 44 17
# 44 43 43 18
# 57 56 42 19
# 55 54 41 20
# 26 25 40 21
# 47 46 39 22
# 28 27 38 23
# 40 39 37 24
# 15 14 36 25
# 12 11 35 26
# 49 48 34 27
# 22 21 33 28
# 6 5 32 29
# 60 59 31 30
# 30 29 30 31
# 36 35 29 32
# 52 51 28 33
# 19 18 27 34
# 42 41 26 35
# 45 44 25 36
# 10 9 24 37
# 58 57 23 38
# 17 16 22 39
# 56 55 21 40
# 25 24 20 41
# 27 26 19 42
# 14 13 18 43
# 48 47 17 44
# 5 4 16 45
# 29 28 15 46
# 51 50 14 47
# 41 40 13 48
# 9 8 12 49
# 16 15 11 50
# 24 23 10 51
# 13 12 9 52
# 4 3 8 53
# 50 49 7 54
# 8 7 6 55
# 23 22 5 56
# 3 2 4 57
# 7 6 3 58
# 2 1 2 59
# 1 0 1 60
# 61 60 1 60
###
### @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# end.