帮忙检查一个VF程序题看我错在哪了

来源:百度知道 编辑:UC知道 时间:2024/05/27 13:38:51
set talk off
clear
input "输入一个大于1的整数" to N
I=2
do while I=2 to N-1
if mod(N,I) =0
?"整数"+ allt(STR(N))+"不是素数"
else
if I<N-1
I=I+1
else
?"整数"+allt(STR(N))+"不是素数"
endif
endif
enddo

小心试验哦,会死机...
clear
input"请输入一个大于0的整数:" to i

for x=2 to i-1
for m=2 to x-1
if mod(x,m) =0
?""
else
?x
exit
endif
endfor
endfor

这个呢错在哪里??是 输出1到N之间的所有素数??马上要考试了,很急。。。大侠们帮一下哈~~

程序中的问题:没有章法。
一个数是不是素数,需要不断向下测试,至少要测试到它的平方根取整才可以,一般我们为了好理解,都是测试到比这个数小1,实际上做了不少无用功。你的程序仅测试一个数是不是能整除这个数就,断定这个是或者不是素数是不成的。

set talk off
clear
input "输入一个大于1的整数" to N
for i=2 to N
ss=i &&先假设i是素数,并保存到ss
pd=.t.
for k=2 to i-1
if mod(i,k)=0
pd=.f. &&不是素数,就不再判断,否则继续判断
exit
endif
endfor
if pd &&是素数则打印
? ss
endif
endfor
set talk on

*测试通过

不错不错
学习学习了