重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

自分がPHPを覚えたいということで知り合いから
課題を出されました。その課題が
PHPで100までの素数を出すということなのですが、
どうしても分かりません。まったくはじめの段階でいきずまって、なんども書いては消しての繰り返しになっております。
どなたかご存知の方が今したらお伺いできますでしょうか。
<?php
$max = 500;
$arr = range( 2, $max );
$end = sqrt( $max );
for ( $i = 2; $i < $end; ++$i ) {

A 回答 (3件)

じゃあ私は「エラトステネスのふるい」で


<?php
$max_num = 100; // 100までの素数を求める
$array = range(0, $max_num); // 0-100までの配列を準備する
// 素数でないものは配列の値を0にする
// $array[0]はもともと0なので$array[1]だけ0にセット
$array[1] = 0;
// 平方根の値までを調べればよい
$limit_num = (int)sqrt($max_num);
// 素数の倍数は素数ではないので0にする
// 2から$limit_numまでループ
for ($search = 2; $search <= $limit_num; $search++) {
if ($array[$search]) { // 0でないということは素数
// 素数の2倍以上の倍数を0に
for ($delete = $search * 2; $delete <= $max_num; $delete += $search) {
$array[$delete] = 0;
}
}
}
foreach ($array as $val) {
// 値が0でないものは素数なので表示
if ($val) echo $val . " ";
}
?>
    • good
    • 0
この回答へのお礼

ご丁寧に教えてくださりありがとうございます。
さっそく勉強をさせて頂きます。
どうもありがとうございました!!

お礼日時:2007/03/04 07:35

サンプルです。



<?php
echo "2"." ";
for ($i = 3; $i <= 100; $i += 2) {
  for ($j = 2; $j * $j <= $i; $j++) {
    if ($i % $j == 0) {
      break;
    }
  }
  if ($j * $j > $i) {
    echo $i." ";
  }
}
?>

(注)インデントのため、全角空白を使っています。
    • good
    • 0

<?php


function checkifprime($prime){
for($i = 2; $i < sqrt($prime); $i = $i + 2){
if ($prime % $i == 0){
return false;
}
}
return true;
}
echo "2"." ";
for($i = 3; $i <= 100; $i = $i +2){
if(checkifprime($i)){
echo $i." ";
}
}
?>
    • good
    • 0
この回答へのお礼

さっそくのご返答ありがとうございます。
さっそく勉強をさせて頂きます。
ただまだ初心者のため解読できるのに知らない書き方が多いので時間がかかってしまいそうです。もし他に簡単?ともうしますか、書き方があり、ご存知でしたらお伺いできますか。
申し訳ございません。でもありがとうございました。

お礼日時:2007/03/02 18:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!