VFP求帮忙改错找出1000以内的所有完数,并统计个数.完数是指:数的各因子之和正好等于该数本身(例如6的因子是1,2,3,而 1+2+3=6,所以6是完数)ClearNc=0For n1=1 to 1000M=0For n2=1 to n1-1If n1/n2=mod(n1,n2)M=
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 22:36:19
VFP求帮忙改错找出1000以内的所有完数,并统计个数.完数是指:数的各因子之和正好等于该数本身(例如6的因子是1,2,3,而 1+2+3=6,所以6是完数)ClearNc=0For n1=1 to 1000M=0For n2=1 to n1-1If n1/n2=mod(n1,n2)M=
VFP求帮忙改错
找出1000以内的所有完数,并统计个数.
完数是指:数的各因子之和正好等于该数本身(例如6的因子是1,2,3,而 1+2+3=6,所以6是完数)
Clear
Nc=0
For n1=1 to 1000
M=0
For n2=1 to n1-1
If n1/n2=mod(n1,n2)
M=m+n2
Endif
Endfor
If n1=m
n1
Nc=nc+1
Endif
Endfor
Wait window "完整的个数为"+STR(NC)
哪里错了啊?
VFP求帮忙改错找出1000以内的所有完数,并统计个数.完数是指:数的各因子之和正好等于该数本身(例如6的因子是1,2,3,而 1+2+3=6,所以6是完数)ClearNc=0For n1=1 to 1000M=0For n2=1 to n1-1If n1/n2=mod(n1,n2)M=
* 第六行写错了,只要有没有余数即可,VFP6调试通过
Clear
Nc=0
For n1=1 to 1000
M=0
For n2=1 to n1-1
* If n1/n2=mod(n1,n2) && 这行错了!改成下面的就行,结果:6,28,496,共三个
If mod(n1,n2)=0
M=m+n2
Endif
Endfor
If n1=M
n1
Nc=nc+1
Endif
Endfor
Wait window "完整的个数为"+STR(NC)
Clear
Create Cursor lsb (完数 N(4))
LOCAL n_sr,c_sc,n_gs,n_he,n_bs
n_sr=1000
Store 0 To n_gs,n_he
c_sc=[]
For i=4 To n_sr
n_he=0
n_bs=Ceiling(i/2)
For j=1 To n_bs...
全部展开
Clear
Create Cursor lsb (完数 N(4))
LOCAL n_sr,c_sc,n_gs,n_he,n_bs
n_sr=1000
Store 0 To n_gs,n_he
c_sc=[]
For i=4 To n_sr
n_he=0
n_bs=Ceiling(i/2)
For j=1 To n_bs
If Mod(i,j)=0
n_he=n_he+j
Endif
Endf
If n_he=i
Insert Into lsb Values (i)
Endif
Endf
?[共有]+Alltrim(Str(Reccount([lsb])))+[个完数。]
SELECT lsb
brow
收起