回 帖 发 新 帖 刷新版面

主题:新手上路,请帮忙!

输出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个回复)

沙发

是有错啦~
应是: 
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

板凳

谢谢!不过我还是不明白为什么先给flag 赋值?

3 楼

当I为4时,flag 变成了1,你不再去赋值,flag 永远都是1,以后就没法判断是否是素数了

4 楼

哦!终于明白了 谢谢

5 楼

还有一种是用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 楼

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 楼

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

我来回复

您尚未登录,请登录后再回复。点此登录或注册