我想出了一种非常有效的方法来找出一个数字是否是素数,使用TI-BASIC与TI-83/84/+/SE计算器一起使用。我正试图优化它,无论如何可能。
:Input "NUMBER: ",A
:If A<2 or fPart(A
:Then
:Disp "INVALID INPUT"
:Stop
:End
:0→B
:2→I
:While I<A and not(B
:If 0=fPart(A/I
:1→B
:I+2→I
:If I=4
:3→I
:End
:If B
:Disp "NOT"
:Disp "PRIME"几个注意事项:
"s没有必要,但我添加了它们,这样语法就会在这里突出显示。1递增,而是由2执行,If在第一次运行时将4偏移到3。not(B非常有效,每当找到匹配以将数字识别为复合数字时,就结束循环。发布于 2014-10-23 06:13:00
我不讲TI-BASIC,所以我不能回顾风格、编码约定等等。但是有两种可能的优化:
A是复合的,那么它必须有一个小于或等于sqrt(A)的因子。所以你可以用(我只是猜语法)::sqrt(A) -> S: I<=S和not(B )代替:I<=S和not(B ),如果输入是素数,那么审判庭的数量会大大减少。2的可分性,然后在奇数I = 3, 5, 7, ...上循环。这使您不必在每次循环迭代中检查:If I=4 :3->I。https://codereview.stackexchange.com/questions/67607
复制相似问题