php 素数

我在这里列举几种方法,仅供参考,学习php编程的思路。
方法一:判断素数的办法是用1到某个数之间的所有数去除这个数,如果能够整除这个数的数超过2个那么这个数就不是素数,反之如果能够整除这个数的数只有1个或者2个,那么他就是素数.

<?php
$n = 1000;
echo $n . "以内的素数:";
for ($m = 2; $m <= $n; $m++) { //第一层循环,循环1-$n直接的所有数
    $k = 0; //计数器初始化
    for ($i = 1; $i <= $m; $i++) { //第二层循环,循环1-$m直接的所有数,$m属于区间【1,$n】
        if ($m % $i == 0) { //取模运算,如果余数为0,K自增1
            $k++;
        }
    }
    if ($k == 2) { //如果k的值等于1或者2,那么是素数,将其输出
        echo $m . "-";
    }
}
?>

方法二:判断素数的办法是除了1和本身外,有其它能够整除这个数的数,那么这个数就不是素数

<?php

$isPrime = true;
$n = 1000;
echo $n . "以内的素数:";
for ($i = 2; $i < $n; $i++) { //第一层循环,循环1-$n直接的所有数
    for ($j = 2; $j <= intval(sqrt($i)); $j++) { //第二层循环,$i开平方,这里的intval是10进制取整数的意思
        if ($i % $j == 0) { //取模运算,如果余数为0,输出$isPrime=false,并跳出第二层循环
            $isPrime = false;
            break;
        }
        $isPrime = true;
    }
    if ($isPrime) { //如果$isPrime=true,将$i输出
        echo $i . " ";
    }
}
?>

方法三:这个方法其实和方法二差不多,思路是同一个,实现的代码不同。

<?php
$ss = 2;
//声明变量$ss,赋初值为最小的素数
$max = 1000;
//声明变量$max,赋值为最大的范围
$arr = array();
//声明一个数组$arr
echo $max . '以内的素数为:';
while ($ss < $max) {
    //判断变量是否在允许的范围内
    $boo = false;
    //声明一个布尔变量$boo,初值为false
    foreach ($arr as $value) {
        //使用foreach语句遍历$arr数组
        if ($ss % $value == 0) {
            //如果变量$ss 能够被数组元素整除
            $boo = true;
            //将布尔变量赋值为true
            break;
        }
    }
    if (!$boo) {
        //判断变量$boo值
        echo $ss . ' ';
        //如果$boo为假,则说明当前变量$ss为素数,输出素数
        $arr[count($arr)] = $ss;
    }
    $ss++;
}
?>

发表评论

邮箱地址不会被公开。 必填项已用*标注