下边是我编程求的s=3!+5!+7!+......+N!,当s>=680000时,求N
CLEAR
N=1
DO WHILE .T.
N=N+2
J=1
S=0
FOR I=1 TO N
J=J*I
ENDFOR
S=S+J
IF S>=680000
EXIT
ENDIF
ENDDO
?N
RETURN
而参考答案为:
CLEAR
S=0
N=3
DO WHILE .T.
t=1
m=1
DO WHILE m<n
t=t*m
m=m+1
ENDDO
S=S+t
IF S>=680000
EXIT
ENDIF
N=N+2
ENDDO
?N
RETURN
它这里用了两个do while语句,我的仅用了一个do while语句,我用了for to语句。
CLEAR
S=0
N=0
DO WHILE .T.
N=N+1
J=1
FOR I=1 TO N
J=J*I
ENDFOR
S=S+J
IF S>=61000
EXIT
ENDIF
ENDDO
?"自然数:",N, "阶乘和:",S
RETURN
这是与上楼差不多一致的编程(求连续自然数的阶乘和不超61000,应该是到>=61000时结束)
在前n项和中能被17或35整除的数有多少个。
CLEAR
N=0
FOR X=20 TO 80
S=0
FOR I=1 TO X
S=S+I
NEXT
IF S%17=0 OR S%35=0
N=N+1
ENDIF
NEXT
?N
RETURN
vfp编程
下面是excel中的公式IF(OR(MOD(BE21,17)=0,MOD(BE21,35)=0),1,0)
clear
N=0
FOR WUY=0 TO 3
FOR ERY=0 TO 9
FOR YIY=0 TO 10-WUY-ERY
IF 5*WUY+2*ERY+YIY=18
N=N+1
?WUY,ERY,YIY
ENDIF
NEXT
NEXT
NEXT
?N
RETURN
这是求18元分成1元,2元,5元有多少种分法,总纸币张数为10,运行结果为12,实际是3组,显示过程知道,所求的是和为18,张数之和不是10张,即小于等于10.
在条件后加上 and WUY+ERY+YIY=10
运行结果正常。