Contents
引数に指定した数値が素数かどうかを調べます。素数の場合True、素数でない場合Falseを返します。
- 構文
- 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
解説
- 3-5行目
- numが2未満ならFALSEを返す。
CASE num < 2 RESULT = FALSE EXIT
- 6-8行目
- numが2ならTRUEを返す。
CASE num = 2 RESULT = TRUE EXIT
- 9-11行目
- numを2で割った余りが0(numが偶数)ならFALSEを返す。
CASE num MOD 2 = 0 RESULT = FALSE EXIT
- 13,18行目
- n=3から\(\sqrt{\rm{num}}\)まで2ずつカウントアップ(n=3,5,7,…)。偶数は素数でないことは自明なので2ずつカウントする。
FOR n = 3 TO SQRT(num) STEP 2 … NEXT
- 14-17行目
- nで割り切れたらnumは素数ではないので、FALSEを返して終了。
IFB num MOD n = 0 THEN RESULT = FALSE EXIT ENDIF
- 19行目
- 13行目>>>でループを抜けなければ素数なのでTRUEを返す。
RESULT = TRUE
この記事は役に立ちましたか?
ご協力ありがとうございます。
関連記事
- ABS関数 (スクリプト関数)
- 引数の絶対値を求めます。
- ARCCOS関数 (スクリプト関数)
- 引数の逆余弦を求めます。
- CEIL関数 (スクリプト関数)
- 正の方向へ切り上げた数値を返します。
- LN関数 (スクリプト関数)
- 自然対数を求めます。
- LOGN関数 (スクリプト関数)
- 常用対数を求めます。
- ZCUT関数 (スクリプト関数)
- マイナス値を0にして返します。プラス値はそのままの値を返します。
- isOdd (自作関数)
- 奇数かどうか調べます。
- radToDeg (自作関数)
- 弧度法(Radian)を度数法(Degree)に変換します。度数法を弧度法に変換するにはDegToRad関数を使います。
- degToRad (自作関数)
- 度数法(Degree)を弧度法(Radian)に変換します。弧度法を度数法に変換するにはRadToDeg関数を使います。
- ARCSIN関数 (スクリプト関数)
- 引数の逆正弦を求めます。