• ベストアンサー

php で1から100までの素数の表示の仕方を教えてください

剰余演算子%を使ってforeach for() if()を組み合わせて1から100までの素数の表示の仕方を教えてください、お願いします。 ちなみに100以下のすべての素数を求めるプログラムで、素数は、1とその数以外に約数を持たない数のことです。たとえば、1を除くと2,3,5,7,11・・・となります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

<?php //PHP 6.0.0 200801101530 //エラトステネスの篩はPHPでどうやるのか調べるのが面倒なので //素直に行きます。 $array = array(); array_push($array,2); for($i = 3;$i <= 100;$i++){ $k = true; for($j = 2;$j < $i;$j++){ if ($i % $j == 0){ $k = false; } } if ($k == true){ array_push($array,$i); } } //foreach for() if()を組み合わせて・・・・って指定があるのでこっそり使用。 foreach($array as $val){ print($val . "\n"); } ?>

sano006
質問者

お礼

ソースを書いてくれてすごく助かりました。本当にありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

こんな感じ?数字でかくしすぎると処理長いですw <?php //1から100までの素数を取得 $prime = array(); for ($i = 1; $i <= 100; $i++) { if (isPrimeNumber($i)) { array_push($prime, $i); } } //取得した素数の出力 foreach ($prime as $value) { echo $value . "&nbsp;"; } function isPrimeNumber($target) { //マイナス値を無視 $target = abs($target); //1以下は素数でない if ($target < 2) { return false; } //対象数値の平方根までの整数で //割り切れる数値は素数でない $max = floor(sqrt($target)); for ($i = 2; $i <= $max; $i++) { if ($target % $i == 0) { return false; } } return true; }

sano006
質問者

お礼

ありがとうございます。これでなんとかなりそうです。本当にありがとうございました。

すると、全ての回答が全文表示されます。
noname#58606
noname#58606
回答No.2

http://okwave.jp/qa2797000.html 素数の求め方は、私も、暇だった頃に、作ったことがあります。 私は関数の再帰を利用したような。 自分で考えてみることが出来る、適度な難しさだと思いますよ。 考え方としては、エラトステネスのふるいが有名です。 素数リストに加えられた数の全ての倍数を、探索リストから削除する方法です。 ただし、この方法だと配列が膨れるという欠点があります。 コンピュータは同じ作業を素早く出来るから、目標の数を目標の数の半分の数まで割り続けるのも、手ですよ。 97は素数ですが、1から48まで割れなかったら、素数です。 49以上だと、2で割れなくなるので(つまり割れたとしても小数点になるので)、素数ではなくなるという訳です。 この方法だと、メモリーは少なくなりますが、恐ろしく時間がかかります。w

sano006
質問者

お礼

ありがとうございます、参考になりました。試してみます

すると、全ての回答が全文表示されます。

関連するQ&A