很多站长朋友们都不太清楚php素数怎么求,今天小编就来给大家整理php素数怎么求,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 在php中怎么用函数实现 输出1-100 中的质数(素数,只能被1和本身整除的数) 2、 php判断一个数是否为素数 3、 如何用PHP求一万以内的素数的个数 4、 php编程输出100以内的素数 5、 PHP求1000以内的素数代码 6、 php中求素数问题 在php中怎么用函数实现 输出1-100 中的质数(素数,只能被1和本身整除的数)用函数实现1-100中素数的算法如下:
<?php //定义函数
function sushu() {
//求100以内质数
for ($i = 1; $i <= 100; $i++)
{
$k = 0;
for ($j = 1; $j < $i; $j++) {
if ($i % $j == 0) { $k++;}}
if ($k == 1) {
echo $i;
echo "nbsp;nbsp;";
}
}
}
sushu(); // 调用函数
?>
PHP相关知识拓展:
PHP 用户定义函数:
除了内建的 PHP 函数,我们可以创建我们自己的函数。
函数是可以在程序中重复使用的语句块。
页面加载时函数不会立即执行。
函数只有在被调用时才会执行。
自定义函数方法:
<?php
function writeMsg() {
echo "Hello world!";
}
writeMsg(); // 调用函数
?>
php判断一个数是否为素数function selectnum($num){
for ($j = 2; $j < sqrt($num); $j++) {
if ($num % $j == 0) {
return false;
}
}
return true;
}
判断是不是 素数 ,若 返回true 就是 素数,因为 若一个数能被整除,那肯定就不是素数!!!
加平方根验证(sqrt)的目的,是为了优化性能,因为:
如果它不是质数,那么它应该可以表示成两个非1非自身的数相乘。
而这两个数,必然有一个大于平方根一个小于平方根,或者两个都等于平方根。
下面是 获取 1000000 内 所有的 素数 ,在PHP7下 能做到2.3秒, 在5下 不到4秒!
public function test()
{
$start_time = microtime(true);
set_time_limit(0);
$num_max = 1000000;
$arr = [] ;
for ($i = 1;($i*6) <= $num_max; $i++) {
$base=$i*6;
$num=$base-1;
$sta=$this->testnum($num);
if ($sta) {
$arr[$num]=1;
}
$num=$base+1;
$sta=$this->testnum($num);
if ($sta) {
$arr[$num]=1;
}
}
$end = microtime(true);
$zong = $end -$start_time;
echo '开始' . $start_time . '<br/>' ;
echo '结束' . $end . '<br/>' ;
echo '用时' . $zong . '<br/>';
echo '共' . count($arr) . '个素数';
}
function testnum($num){
for ($j = 2; $j < sqrt($num); $j++) {
if ($num % $j == 0) {
return false;
}
}
return true;
}
如何用PHP求一万以内的素数的个数<?php
$count = 0;//该变量用来统计素数个数,并初始化为0
echo "素数:";
for($i=2;$i<1000;$i++)
{
for($j=2;$j<=intval(sqrt($i));$j++)
{
if($i%$j==0)
{
$isPrime=false;
break;
}
$isPrime=true;
}
if($isPrime)
{
$count = $count + 1;//是素数,所以统计变量加1
echo $i ." ";
}
}
echo "素数的个数为:".$count;
?>
php编程输出100以内的素数素数就是只能被 1 和它本身所整除的数。从2~100,逐个判断素数,如果是素数,就打印,否则不打印。
源代码如下:
#coding:utf-8
for i in range(2,101):
fg = 0
for j in range(2,i-1):
if i%j == 0:
fg = 1
break
if fg == 0:
print(i)
i = 2
c = []
while i <= 100:
j = 2
while j <= i:
if i % j == 0:
if i == j:
c.append(i)
break
j += 1
i += 1
print(c)
扩展资料
a~b之间的素数的代码
def su(a,b):
for i in range(a,b):
n = False #默认不是素数,如果是素数,跳出循环
for j in range(2,int(i**0.5)):
if i%j == 0:
n = True
break
if n == False:
print(i,end=" ")
su(100,200)
PHP求1000以内的素数代码echo "1000以内的所有素数为:2,3,5,";
//因为32的平方最接近1000;所以先求出32以内的素数;
for($j=4;$j<32;$j++){
if($j%4 == 1 or $j%4 == 3){
if($j%3 != 0 and $j%5 !=0){
$arr[] = $j;
echo $j.",";
}
}
}
for($i=32;$i<1000;$i++){
$array[] = $i;
}
foreach($array as $num){
for($n=0;$n<count($arr);$n++){
if($num%$arr[$n] == 0){
if($array[$num-32]){
unset($array[$num-32]);
}
}
}
}
foreach ($array as $cnt){
if($cnt%4 == 1 or $cnt%4 == 3){
if($cnt%3 != 0 and $cnt%5 !=0){
echo $cnt.",";
}
}
}
刚看到楼上的方法,确实比我这个好,建议用楼上的方法。
php中求素数问题//php求素数 - 计算 a 到 b 之间的素数。
function sushu($a,$b)
{
if(!empty($a) !empty($b))
{
if($b<$a) return;
$temp = array();
for($i=$a;$i<=$b;$i++)
{
$j = intval(sqrt($i));
$flag = true;
if($i<=3)
{
$temp[$i] = $i;
}else
{
for($x=2;$x<=$j;$x++)
{
if($i%$x==0)
{
$flag = false;
break;
}
}
if($flag)
{
$temp[$i] = $i;
}
}
}
return $temp;
}
}
关于php素数怎么求的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php素数怎么求 php求1001000所有素数的详细内容...