2016-11-21 18 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

相關問題