2

我正在制作一个程序,它可以判断给定数字是否为质数。无论我输入质数还是其他数字,它总是显示“它不是质数”。它有什么过错吗?

10    input "what is the number";a    
20    let b=1    
30    let b=b+1    
40    let k=a/b    
50    let p=fix(k)    
60    if p=k then goto 100    
70    if b<a then goto 30    
80    print "it is a prime number"    
90    goto 110    
100    print "it is not a prime number"    
110    end    
run
4

2 回答 2

4

遵循逻辑:

  1. 你输入一个数字,a
  2. 该程序创建b1.
  3. 该程序立即添加1b,所以b就是现在2
  4. 程序设置ka/b。这意味着k现在是一半a
  5. 该程序设置pk没有可能存在或不存在的 .5。
  6. 如果p(half of arounded down) 等于k(half of anot rounded down),也就是说,如果a能被 整除b,它会变为 100 并表示it is not a prime number
  7. 否则,如果b(即2) 小于a程序转到第 30 行并添加另一个1b重复该过程,但现在b3
  8. 否则,如果b(which is 2) 等于a或大于它,它会打印出这是一个素数。

假设您输入的数字是 2。实际上,二是质数。然而,按照上面的逻辑,你会看到程序会告诉我们它不是质数,因为在第 6 步,二除以二是一,而截断的一仍然是一。除 1 以外的任何数都应如此,因为所有数都可被自身整除。

我的猜测是,在您的测试中,您从未测试过 1;程序应该说 1 是一个素数(这是因为即使 1 可以被自己整除,但你从 b=2 开始)。

(另请注意,这在技术上也是错误的:一不是质数。)

于 2017-03-28T19:31:06.677 回答
1

此代码描述了在基本中确定素数:

10 INPUT p
20 FOR l = 2 TO INT(SQR(p))
30 LET a = p / l
40 LET b = FIX(a)
50 IF a = b THEN GOTO 80
60 NEXT l
70 PRINT "prime"
80 END
于 2017-06-09T02:45:41.643 回答