>백엔드 개발 >PHP 튜토리얼 >用一个函数获取质数的疑惑

用一个函数获取质数的疑惑

WBOY
WBOY원래의
2016-06-23 13:59:21835검색

// 获取100?200之间的素数function main(){	for($i=100; $i<201; $i++){		$b = false;		for($j=2; $j<$i-1; $j++){			$k = $i % $j;			if($k == 0){				$b = true;				//break;			}		}		if(!$b){			echo $i ."<br>";		}	}}// 我的疑虑在break那个地方,测试最后的结果,有没有break,都是一样的结果。// 但如果要用程序来解释数学定义,就得加上break对吧?


回复讨论(解决方案)

有没有 break 都不会影响打印的结果,因为打印的条件是 $i 素数
但是对于运行效率而言,没有 break 时需比较完全部数据后($i-1)才结束,而有 break 时则在发现第一个合数时就结束了,其后的无效劳动也就不必再做了

有没有 break 都不会影响打印的结果,因为打印的条件是 $i 素数
但是对于运行效率而言,没有 break 时需比较完全部数据后($i-1)才结束,而有 break 时则在发现第一个合数时就结束了,其后的无效劳动也就不必再做了
+1

你尝试求20000内或更大的质数时,你就知道有break和没break的区别了,你不妨测试一下 

……
感谢xuzuning,让我又巩固了一把基础知识。

/*Navicat MySQL Data TransferSource Server         : localhostSource Server Version : 50532Source Host           : localhost:3306Source Database       : testTarget Server Type    : MYSQLTarget Server Version : 50532File Encoding         : 65001Date: 2014-04-10 16:53:46*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `guagua_config`-- ----------------------------DROP TABLE IF EXISTS `guagua_config`;CREATE TABLE `guagua_config` (  `gid` int(10) unsigned NOT NULL AUTO_INCREMENT,  `eid` int(11) NOT NULL DEFAULT '0',  `reward` text COMMENT '设置将项,序列化',  `words` varchar(200) DEFAULT '',  `stoptime` datetime DEFAULT NULL,  PRIMARY KEY (`gid`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='刮刮有奖配置';-- ------------------------------ Records of guagua_config-- ------------------------------ ------------------------------ Table structure for `guagua_order`-- ----------------------------DROP TABLE IF EXISTS `guagua_order`;CREATE TABLE `guagua_order` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `eid` int(11) NOT NULL DEFAULT '0',  `phone` int(11) NOT NULL DEFAULT '0',  `name` varchar(10) NOT NULL DEFAULT '',  `reward` varchar(10) NOT NULL DEFAULT '' COMMENT '所得奖',  `time` datetime NOT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Records of guagua_order-- ----------------------------

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.