您好我试图将此代码翻译为TI-BASIC。我遇到了如何将循环更改为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;
}
答案 0 :(得分:4)
在这种情况下,您可以有效地使用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
答案 1 :(得分:3)
在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
答案 2 :(得分:2)
我不明白你为什么要使用while循环,因为ti-basic有for循环:
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
End
N/I=int(N/I
是一种检查数字余数的方法(另一种说法是N%I == 0但是基本没有模数)。这里的另一个技巧是将I设置为其最大界限(int(N/2
),作为其他语言所具有的“中断”