VFP高手请进,程序改错

来源:百度知道 编辑:UC知道 时间:2024/05/07 19:18:06
希望高手帮助,谢谢!

(一)下列程序的功能是找出前100个素数。素数是大于1且只能被l和自身整除的整数,如2、3、5、7……。判断的方法是:设要测试的数是pN,用pN除以2到 之间的每一个整数j,若所有的j都不能整除pN,则pN为素数。 要求:
① 将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;
② 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
CLEAR
DIME arrp[100]
i=1
n=2
DO WHILE i<=100
IF checkp (n)
arrp[i]=n
?? arrp[i]
i=i+1
ENDIF
n=n+1
ENDDO

FUNCTION checkp
PARA pn
IF pn=2
return .t.
ENDIF
m=.T.
FOR j=2 TO CEILING (SQRT(pn)) && CEILING (n)是取不小于n的最小整数
IF pn%j<>0
m=.T.
ENDIF
ENDFOR
RETURN m
ENDFUNC
(二)下列程序的功能是找出前100个素数。并按每行5个素数显示在主窗口中。素数是大于1且只能被l和自身整除的整数,如2、3、5、7……。判断自然数n是否为素数的方法是:用n除以2到 之间的每一个整数j,若所有的j都不能整除n,则n为素数。 要求:
① 将下列程序输入到项目中的程序文件PCODE中,并对其中的2条错误语句进行修改;
② 在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
CLEAR
DIME arrPrime[100]
i=1
n=2
DO

(一)CLEAR
DIME arrp[100]
i=1
n=2
DO WHILE i<=100
IF checkp (n)
arrp[i]=n
?? arrp[i]
i=i+1
ENDIF
n=n+1
ENDDO

FUNCTION checkp
PARA pn
IF pn=2
return .t.
ENDIF
m=.T.
FOR j=2 TO CEILING (SQRT(pn)) && CEILING (n)是取不小于n的最小整数
*IF pn%j<>0 && 错
*m=.T. && 错
IF pn%j=0
m=.F.
ENDIF
ENDFOR
RETURN m
ENDFUNC
(二)
CLEAR
DIME arrPrime[100]
i=1
n=2
DO WHILE i<=100
isPrime=.t.
FOR j=2 TO INT(SQRT(n))
*IF n%j!=0 && 错
IF n%j=0
isPrime=.f.
EXIT
ENDIF
ENDFOR
IF isPrime
arrPrime[i]=n
?? arrPrime[i]
IF i%5=0
?
ENDIF
i=i+1
*ENDF && 错
ENDIF
n=n+1
ENDDO

(一)

pn%j<>0-----------------pn%j=0

m=.T.-------------------m=.F.

(二)
IF n%j!=0---