我正在编写一个程序,它可以判断一个给定的数字是否为质数。无论我输入一个质数还是另一个数字,它总是显示“这不是一个质数”。这里面有什么问题吗?
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发布于 2017-03-29 03:31:07
遵循以下逻辑:
如果您输入一个数字,a.
2.
1添加到b,这样b现在就是2.
b1b。这意味着k现在是a.p设置为k,而不使用可能存在或不存在的.5。p ( a的一半向下舍入)等于k ( a的一半不向下舍入),也就是说,如果<代码>D29可以被<代码>D30整除,则它将转到100并显示为it is not a prime number.b (即2)小于a,则程序转到第30行并向b添加另一个1并重复该过程,但现在b为3.b (即2)等于或大于a,则它将打印这是一个质数。<代码>H246<代码>G247假设你输入的数字是2,2实际上是一个质数。对于除1以外的任何数字都应该如此,因为所有的数字都可以被它们自己整除。
我的猜测是,在您的测试中,您从未测试过1;程序应该说明1是一个质数(这是因为即使1可以被自身整除,您也可以从b=2开始)。
(还要注意,这在技术上也是错误的:1不是质数。)
发布于 2017-06-09 10:45:42
这段代码描述了如何在basic中确定质数:
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 ENDhttps://stackoverflow.com/questions/43047110
复制相似问题