この前仕事中にどうしても暇だったので素数を出力するプログラムを考えてみることにした。
仕事中なので仕事しているフリをしなくちゃいけないので、EXCELを開きながらプログラミングを打てるVBA言語でまず考え、帰宅後PHP言語の場合で考えた。
色々なやり方あるんだと思うけど、自分で考えられて嬉しかったので、ただのメモとして書いておく。
そもそも素数とは
1とその数自身でしか割り切れない数の事。
わかりづらいが例えば
7は「1」と「7」(その数自身)でしか割ることができない。
11も「1」と「11」(その数自身)でしか割ることができない。
なので7も11も素数だ。
15は「1」と「3」と「5」と「15」で割ることができるので素数ではない。
VBAで素数を出力する
Sub Sosuu()
Dim i
Dim j
Dim k
j = 2
k = 0
For i = 2 To 100
k = 0
For j = 1 To i
If i Mod j = 0 Then
k = k + 1
End If
Next
If k = 2 Then
Debug.Print i
End If
Next
End Sub
これは2から100の中の素数を出力するプログラムだ。
VBAではPHPと違って割り算の余りを算出するにはMODを使う。(PHPは%)
For文もFor i = 2 To 100という風にわかりやすい表記だ。この範囲を変える100の部分を変えればよい。
考え方についてはPHPの方で紹介する。
PHPで素数を出力する
<?php
$k = 0;
$count = 0;
for($i=2;$i<=100;$i++){
for($j=1;$j<=$i;$j++){
if($i % $j == 0) {
$k += 1;
}
}
if($k == 2){
echo $i.”</br>”;
$count += 1;
}
$k=0;
}
echo “1から”.$i.”までの素数は”.$count.”個”;
?>
素数を出力するのと同時に出力された素数の個数も出力するようにしてみた。
考え方
phpで素数出力のプログラムの考え方を簡単に説明する。
<?php
$k = 0;
$count = 0;
for($i=2;$i<=100;$i++){ ←iの値を2から100まで1ずつ増やしていく。
for($j=1;$j<=$i;$j++){ ←jの値を1からiまで1ずつ増やしていく
if($i % $j == 0) { ←もしあまりが0だったらというIf文
$k += 1; ←割り切れたときにkに1を足していく
}
}
if($k == 2){ ←もし割り切れた数字が2この時
echo $i.”</br>”; ←その数字を出力する
$count += 1; ←出力した際にcountに1ずつ足す
}
$k=0; ←kは毎回リセットする
}
echo “1から”.$i.”までの素数は”.$count.”個”; ←文字の連結「.」を使い、素数の個数を出力させる
?>
コメント