题目内容

下面是判断n是否是一个质数的程序,运算次数比较多,结构也比较复杂,例50中,dn1,按质数的定义,即可,这是什么原因?你觉得这改法好不好?有没有更好的办法,其他步骤有没有更改的地方,不妨给出你的程序?

10

INPUTn=”;n

20

flag=1

30

IF n2 THEN

40

  d=2

50

  WHILE d=n1 AND flag=1

60

   IF n MOD d=0 THEN

70

    Flag=0

80

   ELSE

90

    d=d1

100

    END IF

110

   WEND

120

ELSE

130

 IF flag=1 THEN

140

   PRINT n;“是质数.”

150

 ELSE

160

  PRINT n;“不是质数.”

170

 END IF

180

END IF

190

END

答案:略
解析:

  如11是质数,没有必要用23,…,10分别去除,只要不能被(也可表示为int(sqvt(11))整除即可.因为,若为整数,显然x不是质数,若不是整数,取其整数部分,不会有超过的约数了.

  将50d=n1,改为,减少了循环次数,但每次程序运行都计算判断无意中增加了运算量.应在2010间加入参数,再将d=n1,改为d=a

  需改进的地方还有,偶数(2)显然不是质数,因此将90中步长d=d1改为d=d2

程序略


练习册系列答案
相关题目

违法和不良信息举报电话:027-86699610 举报邮箱:58377363@163.com

精英家教网