计算器上的除数函数

Cat*_*ers -2 calculator ti-basic

我需要知道数字的分解.为什么?好吧,我打算写一个名为Math World的故事,对于基础人群,我有这些性别和因素规则:

如果男性因素超过女性因素(如4个男性因素和3个女性因素),则该数字为男性.

如果女性因素超过男性因素,则该数字为女性.

如果男性因素与女性因素相同,那么这个数字就是雌雄同体(男性和女性).

如果你将一个男性数字取整数幂,你就得到一个雌雄同体数.

如果你将一个女性号码变为整数幂,你会得到另一个女性号码.

男性和女性之间的主要交替(所以2个是男性,3个是女性等等)

但这仅适用于基础人群.

无论如何,我的计算器上没有分解程序.我需要所有因素,而不仅仅是主要因素.我怎样才能做到这一点?

计算器型号:

TI-84 Plus银色版

码:

:Input "TYPE NUMBER", X
:FOR(A,1,X)
:IF remainder(X,A)=0
:Disp A
:End
:End
:End
Run Code Online (Sandbox Code Playgroud)

这是给我计算器错误的代码.我的计算器处于FUNC模式,因此我通过变量按钮放入了X(每种模式的不同变量).

Tim*_*ech 5

我们来看看你的代码:

:Input "TYPE NUMBER", X
:FOR(A,1,X)
:IF remainder(X,A)=0
:Disp A
:End
:End
:End
Run Code Online (Sandbox Code Playgroud)

首先,程序会自动返回TI-Basic.有没有需要Stop,ReturnEnd在默认情况下,程序的结束.程序行为(有一个例外)就好像它们Return最后一样(例外情况是如果在最后一行评估某些东西,它将显示在哪里而不是Done).

其次,除非If声明是伴随着Then,一个End是没有必要的(这将是只剩下一行有条件评估).

因此,您应该只有一个End令牌而不是三个令牌.此外,这可能是你的错字,但你不应该在第一行逗号之后有空格.您可能在第一行的结束报价之前想要它.

现在你的代码工作了,它看起来像这样:

:Input "TYPE NUMBER ",X
:For(A,1,X)
:If remainder(X,A)=0
:Disp A
:End
Run Code Online (Sandbox Code Playgroud)

但是,仍有优化措施.由于For循环中的怪癖,您应该留下右括号.但是对于if语句,你可以If 0=remainder(X,A省略右括号.此外,而不是0=你可以简单地使用not(.最后,remainder(X,A不适用于所有TI系列,并且比一个字节长一个字节fPart(X/A.这种替换没有任何缺点,它将为您节省一点空间(1个字节),时间和兼容性.

最后,如果X是数字而A是该数字的因子,则X/A也是一个因子.因此,我们只需要循环到sqrt(X),这样效率更高.这是最终的代码:

:Input "TYPE NUMBER ",X
:For(A,1,?(X))
:If not(fpart(X/A
:Disp A,X/A
:End
Run Code Online (Sandbox Code Playgroud)

可能的优化(由您决定):

  • 50/50 - 分别计算X/A并使用Ans两次.速度稍微节省,没有尺寸变化,可读性稍差.
  • 不建议 - ))在For循环中保留一点空间(2个字节),但由于带有For(循环的怪癖,大数字的速度明显下降.
  • 由你决定 - 因为你已经知道1和X是因子,你可以从2开始循环.这只取决于你如何记录或显示这些值.