Php新手提问代码的问题,求老师解答

这段是出书1-100内的素数。(新手简单的问题求老师悉心解答)<?phpfor($i=2;$i<=100;$i++){$flag=1;for($j=2;$j<=sqrt(... 这段是出书1-100内的素数。(新手简单的问题求老师悉心解答)
<?php
for($i=2;$i<=100;$i++)
{
$flag=1;
for($j=2;$j<=sqrt($i);$j++)
if(!($i%$j))
$flag=0;
if($flag)
echo "$i<br/>";
}
?>
问题如下:
1.$flag=1;$flag=0;这个在这段代码中起什么作用
2.请解释下这段代码, for($j=2;$j<=sqrt($i);$j++)
展开
 我来答
liaohang900
2012-10-24 · TA获得超过176个赞
知道答主
回答量:124
采纳率:100%
帮助的人:54.7万
展开全部
全部一起解释下吧:
1.for($i=2;$i<=100;$i++)是$i每递增1,只要<=100,就执行一个循环体(就是后面的{}包含的内容);
2. $flag=1这是一个标记,初始化为1;
3.for($j=2;$j<=sqrt($i);$j++),$j=2开始,只要$j<=sqrt($i)(意思是$j<=$i的平方根),那么就执行:if(!($i%$j))
4.if(!($i%$j)) $flag=0; $i%$j表示$i除以$j的余数,有两种情况:零和非零(真和假),if(!(假))就执行:$flag=0,将这个标记置零;if(!(真)),$flag=0这句不执行,仍然$flag=1;
5.if($flag):判断这个$flag是真还是假(0或1);真就echo "$i<br/>"; 假就不用执行echo了,就进行下一次循环。
279838089
2012-10-24 · TA获得超过2801个赞
知道大有可为答主
回答量:2818
采纳率:50%
帮助的人:1712万
展开全部
1,$flag=1;$flag=0;作为是否素数的标记位,1是,0不是,如果是素数if($flag),就打印出来echo "$i<br/>"

2,循环,sqrt是计算一个非负实数的平方根,%是取余,if(!($i%$j))就是 i 除 j 的余数取非!,就是如果i 除 j 没有余数,就是整除,那就不是素数,那就$flag=0;
追问
if($flag)能写成 
if($flag=1)或者if($flag=0)么
不用$flag标记行么?如果行的话,麻烦老师写出来行么?
追答
可以啊,if里面只要是非0的就是执行,是0就不执行,你试试  if(2) echo 111;  就知道了
你把$flag 换成$a也行,只是个变量
就这道题来说,不用标志位也可以的
for($i=2;$i";
}
这样的结果和原来的一样的
但是你要有这种意识,能帮助你以后处理其他复杂的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
嘟嘟乐悠
2012-10-24 · TA获得超过568个赞
知道小有建树答主
回答量:359
采纳率:0%
帮助的人:329万
展开全部
1.Flag不是乱竖的,也不能乱省。这里就是判断当前数字是否有约数,$j当做穷举的取模数时,如果取模后为0,加!为true,说明当前数字不是只有1和自己这两个约数,那么flag的值就为0(false),也就说if($flag) echo "$i<br/>";不会被执行到。!($i%$j) 可以把括号省掉。$flag的值要看出不是数字1 0而是布尔值true false。

2.for($j=2;$j<=sqrt($i);$j++)
因为乘法都是有交换律的,比如 2*5=5*2。 如果检测10是否有约数时就不必一直从2到10取模,只要到10的平方根即可,10的平方根大约等于3.16,检测2和3就可以了,不必要计算出个5,因为知道2就知道5。因为这个算法是穷举了所有的可能,太多的计算就是浪费。
追问
取模,是在php哪部分里学习啊,我原来怎么没看到过啊?老师
追答
$i%$j 知道是啥意思么?这就是取模,说白了就是取余数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiii130
2012-10-24 · 知道合伙人软件行家
xiii130
知道合伙人软件行家
采纳数:817 获赞数:2867
爱好编程,在工作中积累了比较丰富的经验。愿与大家共同进步。

向TA提问 私信TA
展开全部
$flag 判断是否出现错误

出现错误时 flag=0 否则 flag=1

for($j=2;$j<=sqrt($i);$j++) for循环,从2开始,知道j小于i的平方根,每次循环后j的值自增1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
茫然的走着
2012-10-24
知道答主
回答量:13
采纳率:0%
帮助的人:4.7万
展开全部
aaa
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式