回 帖 发 新 帖 刷新版面

主题:求素数的问题,谢谢


我刚接触QB,还请大家多多指点,下面是我编的一个求素数的程序,不知对否.请看一下,谢谢!!
  设N为任一整数.
     I为[2,N-1]之间任一整数:
     R为N/I的余数.
     判断N是否为一个素数.

程序如下:
      INPUT  N
      I=2
      FLAG=0
      WHILE  N   MOD  I <>0
                 I=I+1
                 IF  I>N-1  THEN   FLAG=1
      WEND
      IF FLAG=0  THEN   PRINT  N;   "IS  NOT PRIME  NUMBER"
      IF FLAG=1  THEN   PRINT  N;    "IS  A  PRIME  NUMBER"
这是算法之一,有一点我不明白,是不是这种算法一定要用FLAG才可以呢,不用好像不行.

回复列表 (共10个回复)

沙发

flag是一个标志位,标志着2 到N-1之间的因数,这之间的因数为零,才是素数。

板凳

这样比较号
      INPUT  "N=",N
      I=2
      FLAG=0
      DO
                 IF N MOD I THEN
                   EXIT DO
                 ELSE
                   I=I+1
                   IF  I>N-1  THEN   FLAG=1
                 END IF
      LOOP
      IF FLAG  THEN
        PRINT  N;   "IS  A PRIME  NUMBER"
      ELSE
        PRINT  N;    "IS  NOT  PRIME  NUMBER"

3 楼

这样也行
      INPUT  "N=",N
      I=2
      IF N=0 THEN
        PRINT  N;"是和数"
        END
      ELSEIF N=1 THEN
        PRINT  N;"是单数(^_^)"
        END
      ELSEIF N<0 THEN
        PRINT  N;"是负数(^_^)"
        END
      END IF
      DO
                 IF N MOD I THEN
                   EXIT DO
                 ELSE
                   I=I+1
                   IF  I>N-1  THEN
                     PRINT N;"是质数"
                     EXIT DO
                   ELSE
                     PRINT  N;"是和数"
                     EXIT DO
                   END IF
                 END IF
      LOOP

4 楼

FLAG只是一个变量而已,你可以把她换做其他的变量也可以
求素数比较简单的方法
INPUT N
FOR A=2 TO N-1
IF N <>2 AND N MOD A=0 THEN Y=1
NEXT A
IF Y=1 THEN PRINT "不是素数" ELSE PRINT "是素数"
END

5 楼

flag只是判断上面所执行的N的值,只要非FLAG为非0的任一数都会成立的

6 楼

cls
input n
for i=1 to n
if n mod i=0 then s=s+1
next i
if s=2 then ? "shi" else  ? "bu shi"
end

7 楼

可以这样吗?
cls
dim n as integer
input n  
  while n<=2
    print "input again":input "n"
wend

flag=1
for i=2 to n-1(或sqr(n))
  if n mod i =0 then flag=0 :exit for
next i
if flag then print n,“是素数”else  print n,“不是素数”
end

8 楼

flag是一个标志符号,只是作为一个判断是否为素数的标志,在你的程序段中用的循环结构中的条件是我们可能使用的一个因素,我们只要判断是素数然后输出就可以了并不需要考虑其它,因此我们在循环中进行输出,用一个条件判断是否超过输入数的半(n/2)就可以了

9 楼

我想问问楼主:
你为什么会想不要用它呢?
是它碍眼?没有实际作用是多余的?


我觉得你需要知道的是:
它并不是“不用好像不行”,
只是有存在价值的东西,
不应该被怀疑。明白吗?

INPUT  N
'请加语句确保 N 大于2,怎么加楼上都有例子了。
I=2
WHILE N MOD I <>0
 I=I+1
WEND
IF I=N THEN PRINT N;"IS A PRIME NUMBER" else PRINT N;"IS NOT PRIME NUMBER"

’很奇怪,你怎么习惯打重复的空格呢?

10 楼

print "测试一下空格的事情,嘿嘿,占用一下位置"
  print "So sorry."
  print "Please forgive me."
 print "Oh,You are Wellcome."
 print "Goodbye!"
print
是真的哎

我来回复

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