2016-11-21 45 views
1

在下面的代码中,我导入了一个数字为3到99的文本文件。如何生成正在处理所有质数的文本文件4gl

我已经部分编写代码来查找给定数字的素数。

define variable a as integer. 

define variable b as integer. 

define variable i as integer initial 0. 


    INPUT FROM Value ("C:\src\New folder\bingo.txt"). 
    repeat : 

     IMPORT a. 
     b = a mod i. 
     if b=0 then 
     do: 
     if a=i then 
     do: 
      message " prime number"a view-as alert-box. 
     end. 
     else if a<>i then 
     do: 
      i=i + 1. 
      message " not prime number"a view-as alert-box. 

     end. 

     else if a < i then 
     do: 
      message "not prime number"a view-as alert-box. 
     end.  
     end. 
     END.  
     if b<>0 then 
     do:  
     i=i + 1.  
     message "b<>0"b view-as alert-box.  
     end. 
     end. 
    Output To Value("C:\src\New folder\even.txt")append. 
    export a space. 
    output close. 
    end. 
    end. 

帮助我。 到程序

+0

只是检查是否可以分割2是不够的。一个素数只能被1和它自己分割! – Jensd

+0

是的,我想在上面的代码中增加i值/ * i = i + 1 * /。我不知道在哪里增加它。 – sri

回答

2

我认为将主要检查存储在函数或过程中会更有意义。这个主要检查并不是完美的,但它会适用于这些条件。

此外,最好在处理输入和输出时定义和使用流。

DEFINE VARIABLE a AS INTEGER  NO-UNDO. 

DEFINE VARIABLE b AS INTEGER  NO-UNDO. 
DEFINE STREAM strIn. 
DEFINE STREAM strOut. 

FUNCTION isPrime RETURNS LOGICAL (INPUT iNum AS INTEGER): 

    DEFINE VARIABLE iDiv AS INTEGER  NO-UNDO. 

    DO iDiv = 2 TO INTEGER(SQRT(iNum)): 
     IF iNum MOD iDiv = 0 THEN 
      RETURN FALSE. 
    END. 

    RETURN TRUE. 
END. 

OUTPUT STREAM strOut TO VALUE ("c:\temp\primes.txt"). 
INPUT STREAM strIn FROM Value ("C:\temp\bingo.txt"). 
repeat : 

    IMPORT STREAM strIn a. 

    IF isPrime(a) THEN DO: 
     /*MESSAGE "prime number" a view-as alert-box. */ 
     PUT STREAM strOut UNFORMATTED a SKIP. 
    END. 
    ELSE DO: 
     /*MESSAGE "not prime number" a view-as alert-box. */ 
    END.  

END. 
INPUT STREAM strIn CLOSE. 
OUTPUT STREAM strOut CLOSE. 
+0

非常感谢你@Jensd – sri

+1

@sri我更喜欢在任何一天的感谢之前接受upvote和accept。 :) – Jensd

相关问题