在回答另一个问题时,我报告说,全为 1 的字符串的平方将产生一个数字,其数字上升到原始 1 的数量,然后再下降到 1。
例如 (11111)^2=123454321。
问题是,我如何找出有多少个“一”(一个数字有多少位数字)?
我用谷歌搜索了这个问题,发现这里有很多看似相关的问题,但答案中的“动词”在数学堆栈交换上的 MathJax 中都无效。
更新:有人告诉我这个词是“控制序列”。我想要一个可以执行我在 EXCEL 中执行的操作的控制序列,例如
=len(5 * 13 * 17) 或 =len(1105),结果为 4。
我熟悉 CGOS 操作系统下的 TEX(TTY 环境中全大写),但我不需要也不想要它来进行过程编程。我的需求只是页面布局,仅此而已。
我需要一些可以在 MathJax 和 TeXShop 中运行的东西。
答案1
如果您没有“单词” \length
(我们称之为“控制序列”),那么您可以使用 TeX 原语来定义它:
\def\length#1{\lengthA0#1\relax}
\def\lengthA#1#2{\ifx#2\relax\the\numexpr#1\relax\else\afterfi{\lengthA{#1+1}}\fi}
\def\afterfi#1#2\fi{\fi#1}
%test:
\length{1221234}
请注意,这在 MathJax 中不起作用,因为它基于真正的 TeX。
答案2
非负整数的位数n是以 10 为底的对数的上限n+ 1。
是的,0 有零位数字。
\documentclass{article}
\usepackage{xfp}
\NewExpandableDocumentCommand{\digitlength}{O{10}m}{%
\fpeval{ ceil(ln(#2+1)/ln(#1)) }%
}
\ExplSyntaxOff
\begin{document}
\digitlength{(11111)^2}
\digitlength{123454321}
\digitlength[2]{(11111)^2}
\digitlength[2]{2^(32)-1}
\end{document}
在 MathJax 中不可能得到类似的东西:它不是一种编程语言。要么你能用 JavaScript 实现它并教 MathJax 使用它,要么你就没那么幸运了。