isPrime関数

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

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

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

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   数値 : 素数かどうかを調べたい数値を指定 
// 【戻り値】
//   
//////////////////////////////////////////////////
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関数 (自作関数)
引数に指定した数値が奇数かどうかを調べます。奇数ならばTrue、それ以外の数値はFalse、文字列はエラー値を返します。
radToDeg関数 (自作関数)
弧度法(Radian)を度数法(Degree)に変換します。度数法を弧度法に変換するにはDegToRad関数を使います。
ARCSIN関数 (スクリプト関数)
引数の逆正弦を求めます。
EXP関数 (スクリプト関数)
自然指数関数を求めます。