isPrime関数

本ページには広告が含まれています。

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

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

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   数値 : 素数かどうかを調べたい数値を指定 
// 【戻り値】
//   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-3,6,9,12行目
    UWSC
    	SELECT TRUE
    		CASE num < 2
    			…
    		CASE num = 2
    			…
    		CASE num MOD 2 = 0
    			…
    	SELEND
    CASE式のマッチした式によって処理を分岐。num2未満であれば4行目>>>num2ならば7行目>>>num2で割った余りが0ならば10行目>>>を実行。
  2. 4-5行目
    UWSC
    			RESULT = FALSE
    			EXIT
    Falseを返して終了します。
  3. 7-8行目
    UWSC
    			RESULT = TRUE
    			EXIT
    Trueを返して終了します。
  4. 10-11行目
    UWSC
    			RESULT = FALSE
    			EXIT
    Falseを返して終了します。
  5. 13,18行目
    UWSC
    	FOR n = 3 TO SQRT(num) STEP 2
    		…
    	NEXT
    n=3から\(\sqrt{\rm{num}}\)まで2ずつカウントアップ(n=3,5,7,…)。偶数は素数でないことは自明なので3から2ずつカウントアップし奇数についてのみ処理を行う。
  6. 14-17行目
    UWSC
    		IFB num MOD n = 0 THEN
    			RESULT = FALSE
    			EXIT
    		ENDIF
    nで割り切れたらnumは素数ではないので、Falseを返して終了。
  7. 19行目
    UWSC
    	RESULT = TRUE
    13行目>>>でループを抜けなければ素数なのでTrueを返す。

素数とは

素数とは、「1より大きい自然数のうち、1とその数でしか割り切れないもの」を指します。「約数を2個しか持たない自然数」とも言い換えられます。最も小さい素数は2で、212でしか割り切れません。313でしか割り切れないので素数ですが、414以外に2を約数として持っているため素数ではありません。このように「1とその数以外に約数を持つ自然数」のことを合成数といいます。

以下は100までの素数です。背景が水色に塗られている数字が素数です。

1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100

関連記事

ABS関数 (スクリプト関数)
引数の絶対値を求めます。
ARCCOS関数 (スクリプト関数)
引数の逆余弦を求めます。
CEIL関数 (スクリプト関数)
正の方向へ切り上げた数値を返します。
LN関数 (スクリプト関数)
自然対数を求めます。
LOGN関数 (スクリプト関数)
常用対数を求めます。
ZCUT関数 (スクリプト関数)
マイナス値を0にして返します。プラス値はそのままの値を返します。
isOdd関数 (自作関数)
奇数かどうか調べます。
radToDeg関数 (自作関数)
弧度法から度数法に変換します。
ARCSIN関数 (スクリプト関数)
引数の逆正弦を求めます。
EXP関数 (スクリプト関数)
自然指数関数を求めます。