登录  /  注册

PHP循环学习十一:怎么判断素数并打印1~100的素数、统计其数目

青灯夜游
发布: 2021-08-23 12:00:53
原创
3748人浏览过

在之前的文章《php循环学习十:判定水仙花数,打印全部水仙花数》中,我们给大家介绍一下判断水仙花数并利用循环输出所有水仙花数的方法,下面继续php循环的学习,介绍一下怎么判断一个数是不是素数,并输出1~100的素数,感兴趣的朋友可以学习了解一下~

首先我们来了解一下什么是素数?

素数(质数)是指除了1和它本身之外再不能被其他数整除的自然数;如果能被其他数整除则称为合数(规定1既不是质数也不是合数)。

例如:数字2、3、17、19都是素数,它们只能被1和本身整除。

那么如果给出一个数 num(例如17),我们怎么判断这个数 num 是不是素数呢?下面给大家介绍几种方法:

方法1:最简单的方法是根据素数的定义来求

思路:

  • 素数只能被1和本身整除,即只能被整除2次。

  • 因此我们利用循环,使用大于1小于等于N的各个自然数都去除一下N,统计被整除的次数,如果次数大于2则不是素数;如果等于2则则是素数。

下面来看看实现代码:

<?php
header("content-type:text/html;charset=utf-8");
$num=17;
$count = 1;
for($i = 2; $i <= $num; $i++) {
    if(($num % $i)== 0)
        $count ++;
}
if($count == 2) {
    echo $num . &#39;就是素数<br/>&#39;;
}else{
	echo $num . &#39;不是素数<br/>&#39;;
}
?>
登录后复制

输出结果:

1.png

方法2:

思路:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

下面来看看实现代码:

<?php
header("content-type:text/html;charset=utf-8");
$num=19;
$flag = 1;
for($i = 2; $i*$i <= $num; $i++) //能被2 - sqrt(i)整除的数
{
	if($num % $i == 0)
	{
		$flag = 0;
		break;
	}
}
if($flag == 1) {
    echo $num . &#39;就是素数<br/>&#39;;
}else{
	echo $num . &#39;不是素数<br/>&#39;;
}
?>
登录后复制

输出结果:

2.png

好了知道怎么给定一个数来判断是不是素数了,下面加大难度:怎么给定一个范围(例如1~100),输出全部素数呢?

是不是要使用两个循环,在上面for循环的基础上,在外面套一层for循环来控制范围即可。我们来看看实现代码(直接使用方法2的代码):

<?php
header("content-type:text/html;charset=utf-8");
$count = 0;
for($k = 2; $k <= 100; $k++){ //从2开始,遍历到100
	$flag = 1;
	for($i = 2; $i*$i <= $k; $i++) {//能被2 - sqrt(i)整除的数
	
		if($k % $i == 0)
		{
			$flag = 0;
			break;
		}
	}
	if($flag == 1) {
	    echo $k . &#39;是素数<br/>&#39;;
		$count ++;
	}
}
echo &#39;<br/>1~100间共有 &#39;.$count." 个素数";
?>
登录后复制

输出结果:

3.png

可以看出,我们在内层for循环的循环体中,使用一个计数器$count,每输出一个素数后,自增1,这样就可以统计出1~100内有多少素数了。

好了就说到这里了,有其他想知道的,可以点击这个哦。→ →php视频教程

推荐:PHP面试题大汇总(收藏)

以上就是PHP循环学习十一:怎么判断素数并打印1~100的素数、统计其数目的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号