它是素数? TI-BASIC

时间:2014-03-06 15:24:51

标签: primes ti-basic

您好我试图将此代码翻译为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;
}

3 个答案:

答案 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
  • 测试编号:1003001
  • 所需时间:~4秒(比15:D好得多)
  • 大小:65字节

答案 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),作为其他语言所具有的“中断”