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(每种模式的不同变量).
我们来看看你的代码:
: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,Return或End在默认情况下,程序的结束.程序行为(有一个例外)就好像它们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)
可能的优化(由您决定):
))在For循环中保留一点空间(2个字节),但由于带有For(循环的怪癖,大数字的速度明显下降.