isPrime

引数に指定した数値が素数かどうかを調べます。素数の場合True、素数でない場合Falseを返します。

構文
  1. Boolean = isPrime( 数値 )
引数
数値
素数かどうかを調べたい数値を指定
戻値
TRUE
素数である
FALSE
素数ではない

プログラム

//////////////////////////////////////////////////
// 【引数】
//   数値 : 素数かどうかを調べたい数値を指定 
// 【戻値】
//   TRUE : 素数である、FALSE : 素数ではない 
//////////////////////////////////////////////////
FUNCTION isPrime(num)
	SELECT TRUE
		CASE num < 2
			RESULT = FALSE
			EXIT
		CASE num = 2
			RESULT = TRUE
			EXIT
		CASE num MOD 2 = 0
			RESULT = FALSE
			EXIT
	SELEND
	FOR n = 3 TO SQRT(num) STEP 2
		IFB num MOD n = 0 THEN
			RESULT = FALSE
			EXIT
		ENDIF
	NEXT
	RESULT = TRUE
FEND

解説

  1. 2行目
    	SELECT TRUE
    
    num < 2
    3行目>>>
    num = 2
    6行目>>>
    num MOD 2 = 0
    9行目>>>
  2. 3-5行目
    		CASE num < 2
    			RESULT = FALSE
    			EXIT
    
    numが2未満ならFALSEを返す。
  3. 6-8行目
    		CASE num = 2
    			RESULT = TRUE
    			EXIT
    
    numが2ならTRUEを返す。
  4. 9-11行目
    		CASE num MOD 2 = 0
    			RESULT = FALSE
    			EXIT
    
    numを2で割った余りが0(numが偶数)ならFALSEを返す。
  5. 13行目
    	FOR n = 3 TO SQRT(num) STEP 2
    
    n=3から\(\sqrt{\rm{num}}\)まで2ずつカウントアップ(n=3,5,7,…)。偶数は素数でないことは自明なので2ずつ。
  6. 14-17行目
    		IFB num MOD n = 0 THEN
    			RESULT = FALSE
    			EXIT
    		ENDIF
    
    nで割り切れたらnumは素数ではないので、FALSEを返して終了。
  7. 19行目
    	RESULT = TRUE
    
    13行目>>>でループを抜けなければ素数なのでTRUEを返す。