主题:新手上路,请帮忙!
qbqbqb
[专家分:0] 发布于 2006-06-09 20:51:00
输出3-100的素数!
我是这样写的:
for i=3 to 100
for j=2 to sqr(i)
if i mod j=0 then flag=1
next j
if flag =0 then print i,
next i
end
好象不行,不知道哪里出错了,请高人指点。
回复列表 (共7个回复)
沙发
JRX [专家分:180] 发布于 2006-06-09 21:36:00
是有错啦~
应是:
FOR I=3 TO 100
flag =0
for j=2 to INT(SQR(i))
if i mod j=0 then flag=1
next j
if flag =0 then print i,
next i
end
板凳
qbqbqb [专家分:0] 发布于 2006-06-09 21:59:00
谢谢!不过我还是不明白为什么先给flag 赋值?
3 楼
JRX [专家分:180] 发布于 2006-06-09 22:10:00
当I为4时,flag 变成了1,你不再去赋值,flag 永远都是1,以后就没法判断是否是素数了
4 楼
qbqbqb [专家分:0] 发布于 2006-06-09 22:16:00
哦!终于明白了 谢谢
5 楼
LSQ [专家分:220] 发布于 2006-06-10 12:32:00
还有一种是用GOTO语句
程序清单:
CLS
FOR I=3 TO 100
FOR J=2 TO I-1
IF I MOD J=0 THEN GOTO 1
NEXT
PRINT I;
1 NEXT
6 楼
qbqb [专家分:400] 发布于 2006-06-10 17:21:00
FOR I=3 TO 100
FOR J=2 TO I
IF I MOD J = 0 THEN EXIT FOR
NEXT
IF J=I THEN PRINT I
NEXT
不用flag变量
7 楼
makeyjx [专家分:0] 发布于 2006-07-05 06:13:00
for i=3 to 100 '控制范围
flog=0 '设开关变量
j=1
do
j=j+1
if i mod j=0 then flog=1:exit for
'如果i除了1和i本身还能被哪个数 整除,那么就改变开关变量,并退出循环
loop until j>sqr(i)+1
if flog =0 then print i
next i
end
我来回复