找回密码
 欢迎注册
查看: 15720|回复: 9

[讨论] 十进制数化为对称三进制

[复制链接]
发表于 2021-9-18 07:41:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
对称三进制的系数为 `1, 0,-1`。为了不与运算符号相混淆,一般将系数`-1`写为`\bar1`.
例如十进数`11=9+3-1`,化为对称三进数即`11\bar1`.
试用Mathematica编写一个转换程序。

这里有一篇论文

十进制数与对称三进制数之间转换的一种算法_刘百惠.pdf

340.72 KB, 下载次数: 5, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2021-9-19 17:35:59 | 显示全部楼层
很简单,对称5进制 ,对称7进制,...都可以搞出来。只是编程有点难
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2021-9-21 11:11:56 来自手机 | 显示全部楼层
和1+3+9+27+81部分和做比较。比如11在9和27之间,又小于1+3+9,所以先表示为9+2. 而2 在1,3之间,大于部分和1,需要表示为3-1
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2021-9-24 16:58:53 | 显示全部楼层
用Mathematica来编程,就是一只小鸡。那个论文真是好一把牛刀 他不知道绝对值最小剩余么?
先定义一个转化函数:
  1. BaseformSymmetric3[n0_]:=Module[{n=n0},NestWhileList[{Quotient[First@#,3,-1],Mod[First@#,3,-1]} &,{n,0},First@#!=0&][[All,2]]//Rest//Reverse]
复制代码

然后运算一个实例,再化回去验算一下:
  1. BaseformSymmetric3[11]
  2. FromDigits[%, 3]
复制代码

捕获.PNG

点评

这个函数 R 取偶数也成立  发表于 2021-9-29 13:55
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2021-9-24 19:47:16 | 显示全部楼层
任意对称 奇数进制

i=0

K>0时,重复执行

如果 K mod R ≤(R-1)/2,则  k_i=ki, K= $\lfloor K/R \rfloor$

K mod R >(R-1)/2,则 k_i= k_i-R ,K= `\lceil\frac KR \rceil`

i=i+1

返回 $ {k_{n-1},k_{n-2},...,k_1,k_0}$

以上计算过程可以写成短除法,化二进制的那种

BaseformSymmetric[523,5]={1,-1,1,0,-2}

如果将你的代码中的3替换为R,结果并不完全正确,hujunhua 能写一个这样的函数吗?

点评

3替换为R,则-1要替换为 (1-R)/2  发表于 2021-9-27 18:25
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2021-9-26 12:04:38 | 显示全部楼层
短除法过程

最小剩余短除法.PNG
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2021-10-10 12:13:27 | 显示全部楼层
写下这个函数的完整形式

  1. BaseformSymmetric[n0_, R_] :=
  2. Module[{n = n0},
  3.   NestWhileList[{Quotient[First@#, R, (1 - R)/2],
  4.         Mod[First@#, R, (1 - R)/2]} &, {n, 0}, First@# != 0 &][[All, 2]] // Rest // Reverse]
复制代码

点评

不知道这个函数能不能用于数域筛多项式的选取  发表于 2021-10-10 12:17
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-22 02:11 , Processed in 0.027569 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表