免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 如果我是疯
打印 上一主题 下一主题

关于求质数的dc程序翻译  关闭 [复制链接]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
11 [报告]
发表于 2005-04-04 01:25 |只看该作者

关于求质数的dc程序翻译

用shell可以么?!

  1. #1000以内
  2. seq 1000|factor|cut -f2 -d' '|sort -n|uniq
复制代码

论坛徽章:
0
12 [报告]
发表于 2005-04-04 08:22 |只看该作者

关于求质数的dc程序翻译

寂寞烈火兄能用dc的语法依次解释一下这个过程吗
echo '2p3p[dl!d2+s!%0=@l!l^!<#]s#[s/0ds^]s@[p]s&[ddvs^3s!l#x0<&2+d6000>.]ds.x'|dc

论坛徽章:
0
13 [报告]
发表于 2005-04-04 11:22 |只看该作者

关于求质数的dc程序翻译

dc 命令

用途

提供了一种交互式桌面计算器来完成任意精度的整数计算。
语法

dc [ File]
描述

dc 命令是一个任意精度的算术计算器。dc 命令从 File 参数或者标准输入得到其输入直到它读到一个文件结束符。一旦 dc 命令接收到输入,它将求出计算值并将计算值写入到标准输出当中。它按十进制整数计算,但是您可以指定输入和输出的基数,以及小数部分保留的位数。dc 命令结构如同一个堆栈、逆波兰表示法计算。

bc 命令是 dc 命令的一个预处理器。它提供插入式符号以及和 C 语言类似的语法,能够实现程序的功能和控制结构。
子命令

c         清洁堆栈:dc 命令弹出堆栈中的所有的值。
d         复制栈顶值。
f         显示堆栈上的所有值。
i         弹出栈顶值并将其作为进一步输入的基数。
I         将输入基数压入栈顶。
k         弹出栈顶值并将其作为非负比例因子。位置的恰当数目将会显示在输出中并在乘、除和求幂中保留下来。如果所有的数值一起修改,比例因子、输入基数、输出基数的交互作用是合理的。
lx         将 x 变量代表的寄存器中的值压入堆栈。由 x 变量代表的寄存器是不能修改的。所有的寄存器都以为 0 的值启动。
Lx         将 x 变量视为一个堆栈并将其顶部的值弹出到主堆栈中。
o         将栈顶值弹出并且将其作为进一步输出的基数。
O         将输出基数压入栈顶。
p         显示栈顶值。顶部值不会发生改变。
P         将栈顶作为一个字符串来进行解释,除去并显示它。
q         退出程序。如果 dc 命令正在运行一个字符串,它将弹出递归级别为 2。
Q         弹出栈顶值并将其作为字符串运行的级别。
sx         弹出栈顶值并将其存放在名称为 x 的寄存器中,其中 x 变量可以是任何字符。
Sx         将 x 变量视为一个堆栈。它弹出主栈顶并将其值压入到 x 变量所代表的堆栈。
v         将堆栈顶部的元素用它的平方根来代替。选项中任何现有的小数部分将会计算在内,但是相反,比例因子将会被忽略。
x         将堆栈顶部的元素视为一个字符串并将其作为 dc 命令的一个字符串来运行。
X         将堆栈顶部的数字用它的比例因子来代替。
z         将堆栈中的元素数压入到堆栈中。
Z         将堆栈顶部的数字用这个数字的位数来代替。
Number         将指定的值压入堆栈。Number 是一个完整的字符串其数字从 0 到 9。要表示一个负数,在它前面加上一个 _(下划线)。一个数字可以包含小数点。
+ - / * % ^         对堆栈顶部的两个数进行加(+)、减(-)、乘(*)、除(/)、求余(%)或者取幂 (^)。dc 命令弹出顶部的两个条目并将其结果压回到堆栈中。dc 命令忽略指数的小数部分。
[String]         将用方括号里的 String 参数放到堆栈的顶部。
[= | > | < ] x
                                  将堆栈顶部的两个元素弹出并进行比较。计算x 变量代表的寄存器的值就像它们遵循规定的关系。
!         将其作为一个操作系统命令来解释这一行中剩下的部分。
?         获取并且运行一个输入行。
;:         bc 命令使用这些字符用来进行数组操作。
示例

   1. 要将 dc 命令作为计算器使用,请输入:

用户:    1 4 / p
系统: 0
用户:    1 k   [ Keep 1 decimal place ]s.
        1 4 / p
系统: 0.2
用户:   3 k   [ Keep 3 decimal places ]s.
        1 4 / p
系统: 0.250
用户:   16 63 5 / + p
系统: 28.600
用户:    16 63 5 + / p
系统: 0.235

      dc 命令中可以使用注释如本例所示。包含在方括号中的注释和可能在其后附加 s.([ Comment] s.)都会被 dc 命令忽略。只包含在方括号中的注释存储在堆栈的顶部。

      如果是直接从键盘输入 dc 命令,按下 Ctrl-D 可以结束bc 命令会话并返回到 shell 命令行。
   2. 要装入并且运行一个 dc 程序文件,请输入:

用户:    dc prog.dc
        5 lf x p [ 5 factorial ]s.
系统: 120
用户:   10 lf x p [ 10 factorial ]s.
系统: 3628800

      该项解释 dc 程序,它保存在 prog.dc 程序文件当中,然后从工作站的键盘中读入。lf x 计算存储在寄存器 f 中的函数,它可以由 prog.c 程序文件定义如下:

[ f: compute the factorial of n ]s.
[ (n = the top of the stack) ]s.
[ If 1>n do b; If 1<n do r ]s.
[d 1 >b d 1 <r] sf
[ Return f(n) = 1 ]s.
[d - 1 +] sb
[ Return f(n) = n * f(n-1) ]s.
[d 1 - lf x *] sr

      您可以使用任何文本编辑器或者使用 bc 的 -c(编译)标志来创建 dc 程序文件。当您直接从键盘输入 dc 命令表达式,按下 Ctrl-D 可以结束 bc 命令会话并返回到 shell 命令行。

论坛徽章:
0
14 [报告]
发表于 2005-04-04 11:24 |只看该作者

关于求质数的dc程序翻译

唯一的缺点是可读性太差,不过的确简洁~

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
15 [报告]
发表于 2005-04-04 11:50 |只看该作者

关于求质数的dc程序翻译

[quote]原帖由 "一梦如是"]唯一的缺点是可读性太差,不过的确简洁~[/quote 发表:

跟看天书似的  
PS:unix的命令真神奇呀~~~

论坛徽章:
0
16 [报告]
发表于 2005-04-04 12:36 |只看该作者

关于求质数的dc程序翻译

谢谢寂寞烈火 ,和你感觉一样^_^
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP