ルビスコくん空を飛ぶ

博士学生(D1)の日記です.日記に加えてプログラミング(R)のメモ書きもします.

Rで素数判定プログラム

気になる自然数を入力するとその数が素数かどうかを判別してくれるプログラムを,思いつきでつくってみました.その理屈はいたって簡単.自然数Xを2から順番に割っていって,初めて割り切れた数がXなら素数ですから"X is a prime number!",それ以外なら"X is NOT a prime number!"と表示させます.

readline("Natural number? ")でこの関数を実行したときに"Natural number? "と聞いてくるようにしています.入力された数字は文字列なのでas.numeric()で数値に変換.

prime_n <- function(){
x <- as.numeric(readline("Natural number? "))
is_integer <- function(values){
all(values %% 1 == 0)
}
for(i in (2:x)){
if(is_integer(x / i) == T) break
}
if(i == x) cat(paste0(x, " is a prime number!"))
else cat(paste0(x, " is NOT a prime number!"))
}

実際に実行してみると...

f:id:pam715:20160921131747p:plain

と聞いてくるので数値を入力.

f:id:pam715:20160921131900p:plain

f:id:pam715:20160921132002p:plain

来年は素数の年なんですね.ちなみに見てもわかるとおり,このやり方はXを2からforループを回して順番に割っていくというかなり効率の悪い計算法ですので,例えば2000000009のような大きな数字を入力してしまうとかなり時間がかかります.