WHILE END应用举例

Author: 王茂忠 Date: 1994-11-25

        例:给一个数M,判断它是否是素数(即质数)
        分析:所谓素数,指除了1和它本身之外,不能被其它任何整数整除的数,例如13是素数,因为它不能被2~12之间的任何整数整除。判断是否是素数最原始的方法是先用2除M,再用3除M,……最后用M-1除M,如果都不能整除,则M必然是素数。只要其中有一次被除尽,则M不是素数。其实M不必被2~(M-1)间全部数整除,只要被2~√M(如√M不是整数则取其整数部分)整除即可。如判断B是否是素数,只需将13被2,3除即可。为什么?读者自行分析。由上分析得知,这主要是一个循环除法,并加判断是否整除的问题。因而在设计算法时要考虑循环的条件是什么?(1)除数I由2开始当除数≤√M时,循环就要持续下去;(2)当某一次M被I整除,则循环应结束。怎样表示“M能被I整除”呢?可用一标志Tag=1表示整除,Tag=0表示不能整除。因此,循环条件就是“I≤√MAND Tag=0”
        程序如下:
        5 REM 用WHILE语句实现循环
        10 INPUT "M=";M
        20 IF M=2 THEN PRINT "2 is a prime number": GOTO 90
        30 N=INT(SQR(M))
        40 I=2:Tag=0
        50 WHILE I<=N AND TAG=0
        60 IF M/I=INT(M/I) THEN TAG=1 ELSE I=I+1
        70 WEND
        80 IF TAG=0 THEN PRINT M;"Is a prime number"
        ELSE PRINT M;"Is not prime number"
        90 END
        注意:程序60语句是判断M是否被I整除的方法。如果M/I=INT(M/I),则M能被I整除。如M=16,I=2,16/2=INT(16/2)成立,M能被I整除。M=13,I=3,13/3≠INT(13/3)=4,13不能被3整除,这是因为,若一个数X等于它的整数部分(INT(X)),则X必为整数。
        另外,还可用两个数相除的余数方法来判断两个数是否能整除。R=M-INT(M/I)*I,M和I都是整数,若R=0,表示M能被I整数,否则不能被I整除。(王茂忠)