我正在编写一个程序,可以判断给定的数字是否为素数。无论我输入素数还是其他数字,它总是显示"它不是素数"。它有什么问题吗?
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
答案 0 :(得分:4)
遵循逻辑:
a
。b
设为1
。1
添加到b
,以便b
现在为2
。k
设置为a/b
。这意味着k
现在是a
的一半。p
设置为k
,但不包含可能存在或不存在的.5。p
(a
向下舍入的一半)等于k
(a
的一半未向下舍入),即a
可以被b
整除,它会变为100并显示it is not a prime number
。b
(2
)小于a
,则程序转到第30行并将另一个1
添加到b
并重复这个过程,但现在b
是3
。b
(2
)等于a
或大于lst
,则会打印出这是一个素数。假设您输入的数字是2.实际上,两个是素数。但是,按照上面的逻辑,您将看到程序将告诉我们它不是素数,因为在步骤6中,两个除以2是一个,一个截断仍然是一个。对于除1以外的任何数字都应该如此,因为所有数字本身都可以被整除。
我的猜测是,在你的测试中,你从未测试过1;程序应该说1是素数(这是因为即使1可以被自身整除,你也可以从b = 2开始)。
(另请注意,这在技术上也是错误的:一个不是素数。)
答案 1 :(得分: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