关于“php求质数是否为真”的问题,小编就整理了【4】个相关介绍“php求质数是否为真”的解答:
用javascript或PHP语言实现网页输出1到1000内的素数(质数)。要求排列整齐(建议每行20个数)?<html>
<head>
<title>素数</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<style>
td {
text-align:center;
width:30px;
}
</style>
</head>
<body>
<?php
function Sushu($n)
{
$flag= array_fill(1, $n, true);
$flag[1]=false;
for ($i=2; $i<=sqrt($n); $i++)
{
if (isset($flag[$i]) && $flag[$i])
{
for ($j=$i; $j*$i<=$n; $j++)
{
//$flag[$i*$j] = false;
unset($flag[$i*$j]);
}
}
}
unset($flag[1]);
return $flag;
怎么用PHP写出1到100的质数?//求100以内质数for ($i = 1; $i
计算机怎么求质数?这种算法比较基本,对于每个数n,将n依次从2除到n,然后对余数进行比较,如果余数是0,则除得尽,如果不是0则除不尽,按照质数的定义,只有1和他本身能成为因数也就是除得尽,所以只有除得尽的数不大于两个时,才能是质数。
这种算法的好处是符合大多数人的第一反应,和定义契合得比较好,也比较省空间,但问题是假如我这里n输入了1000000+时,这个运算时间是非常长的,其算法复杂度高达1*10^12,小数据可以用遇到大数据就很难实现高效了。
开根号遍历法
仔细分析算法我们会发现,其实在做除法运算时不需要除每一个数,只要除到根号n即可。这是因为当除数大于根号n时,其结果肯定是小于根号n的(可以用反证法证明),假如此时能除得尽,那么该种可能早就在小于根号n的遍历中被排除掉了,就没有意义了。这样就减小了一部分算法复杂度。
筛选法
筛选法的核心是牺牲内存换速度,因为其不通过遍历来表达一列数而是直接通过数组来表达。用静态的bool量去变现数的状态。
其核心流程为:
定义一个bool数组,其下标为我们要判断的数,其值为true。表示初始阶段所有数都假定是素数。
开始对这个数组进行筛选(及把值改为false),实现把因数含有2的所有数筛掉,把因数含有3的数筛掉,把因数含有5的数筛掉…一直筛选到只剩下素数为止。
求质数因数的最简便方法?短除法
每个合数都可以写成几个质数相乘的形式,这几个质数就都叫做这个合数的质因数。如果一个质数是某个数的因数,那么就说这个质数是这个数的质因数。分解质因数的方法是先用一个合数的最小质因数去除这个合数,得出的数若是一个质数,就写成这个合数相乘形式;若是一个合数就继续按原来的方法,直至最后是一个质数
到此,以上就是小编对于“php求质数是否为真”的问题就介绍到这了,希望介绍关于“php求质数是否为真”的【4】点解答对大家有用。