嗨,我正在试着把这段代码翻译成TI-BASIC。我在如何将for循环更改为while循环以及在TI-BASIC中递增数字方面遇到了问题。
#include <stdio.h>
int main()
{
int n, i, flag=0;
printf("Enter a positive integer: ");
scanf("%d",&n);
for(i=2;i<=n/2;++i)
{
if(n%i==0)
{
flag=1;
break;
}
}
if (flag==0)
printf("%d is a prime number.",n);
else
printf("%d is not a prime number.",n);
return 0;
}发布于 2015-04-07 03:09:55
在这种情况下,您可以有效地使用While循环:
Input "NUMBER: ",A
1->B
3->I
√(A->D
If not(fPart(A/2
DelVar BWhile I<=D and B
fPart(A/I->B
I+2->I
End
If not(B
Disp "NOT
Disp "PRIME发布于 2014-11-18 08:54:00
在TI-Basic中,While循环的工作方式与您期望的一样,并且您可以为其设置条件。递增一个数字就像说
X+i->X 其中'i‘是递增器。
要将For循环更改为While循环,您必须设置While循环来不断检查数字和增量是否已超过上限,同时每次运行时都会增加增量。
如果您想在TI-Basic中模拟i++或++i (使用While循环),那么您只需更改代码的排列即可。请注意,TI-Basic For语句始终在++i下运行。示例(i++):
0->X
While X<10
Disp X
X+1->X
End这将显示(每个数字在一个新的行上)
0 1 2 3 4 5 6 7 8 9示例(++i):
0->X
While X<10
X+1->X
Disp X
End这将显示(每个数字在一个新的行上)
1 2 3 4 5 6 7 8 9 10值得注意的是,TI-Basic For语句在递增时比While循环快得多,并且几乎总是被认为比任务更优越。
集成Timtech的跳过偶数的想法,只需增加几行额外的行,就可以有效地将检查数字的素性所需的时间减半。我扩展了这个想法,跳过2的倍数和3的倍数。
Input "Number:",X:abs(X->X
0
If not(fPart(X/2)) or not(fPart(X/3:Return
For(B,5,sqrt(X),6)
If not(fPart(X/B)) or not(fPart((X+2)/B:Return
End
1发布于 2014-03-18 08:34:40
我不明白你为什么要像ti-basic中的for循环那样使用while循环:
0->F
Input "ENTER NUMBER:",N
For(I,2,int(N/2
If N/I=int(N/I
Then
int(N/2->I
1->F
End
End
If F
Then
Disp "NUMBER IS PRIME
Else
Disp "NUMBER IS NOT PRIME
EndN/I=int(N/I是一种检查数的余数的方法( N%I==0的另一种说法,但ti basic没有模数)。这里的另一个技巧是将i设置为它的最大界限(int(N/2),就像其他语言一样
https://stackoverflow.com/questions/22228747
复制相似问题