首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GW BASIC中执行下面的程序时会出现什么错误?

问在GW BASIC中执行下面的程序时会出现什么错误?
EN

Stack Overflow用户
提问于 2017-03-27 20:56:10
回答 2查看 232关注 0票数 2

我正在编写一个程序,它可以判断一个给定的数字是否为质数。无论我输入一个质数还是另一个数字,它总是显示“这不是一个质数”。这里面有什么问题吗?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2017-03-29 03:31:07

遵循以下逻辑:

如果您输入一个数字,a.

  • The程序将创建

  • ,因为2.

  • The程序会立即将1添加到b,这样b现在就是2.

  • The程序b1b。这意味着k现在是a.
  1. The程序的一半。程序将p设置为k,而不使用可能存在或不存在的.5。
  2. 如果p ( a的一半向下舍入)等于k ( a的一半不向下舍入),也就是说,如果<代码>D29可以被<代码>D30整除,则它将转到100并显示为it is not a prime number.
  3. Otherwise,如果b (即2)小于a,则程序转到第30行并向b添加另一个1并重复该过程,但现在b为3.
  4. Otherwise,如果b (即2)等于或大于a,则它将打印这是一个质数。<代码>H246<代码>G247

假设你输入的数字是2,2实际上是一个质数。对于除1以外的任何数字都应该如此,因为所有的数字都可以被它们自己整除。

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

(还要注意,这在技术上也是错误的:1不是质数。)

票数 4
EN

Stack Overflow用户

发布于 2017-06-09 10:45:42

这段代码描述了如何在basic中确定质数:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43047110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档