php求质数是否为真函数,用javascript或PHP语言实现网页输出1到1000内的素数(质数)。要求排列整齐(建议每行20个数)?

用户投稿 62 0

关于“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】点解答对大家有用。

抱歉,评论功能暂时关闭!