2011-07-22 44 views
1

我想获得多个2和3的帮助。由于解决这个简单的PHP数学

for($i = 0; $i <30; $i++) 
if($i % 2) 
echo 'number is '. $i . ' is multiple of 2 <br/>'; 
elseif($i %3) 
echo 'number is '. $i . 'is multiple of 3 <br/>'; 
else 
echo 'number is '. $i . 'is multiple of some other number <br/>'; 
+1

怎么样6,你会如何对待?什么是17的倍数? –

+0

@Kerrek 17是1和17的倍数,所以最后一条语句仍然有效。但你提出了一个好点6 –

+1

这是作业吗? –

回答

3

试试这个:

if($i % 2 === 0) 
    ... 
elseif($i %3 === 0) 
    ... 

基本上,如果模数为0那么这意味着数整除。

但是,您的逻辑的另一个问题是一个数字可能被23整除。您可以通过提取这些分成不同的if语句解决这个问题:

if($i %2 === 0) { 
    ... 
} 

if($i %3 === 0) { 
    ... 
} 

但是那种休息的你最后else,因为你不能只虽然下跌到它了。你可以通过在你的循环顶部设置一个变量为false来解决这个问题。然后,如果您的任何if语句被触发,请将该变量设置为true。最后,如果变量仍然是false,则在每次迭代结束时打印“不可分割”消息。

+0

它几乎给我的答案,但是当数字是2和3的倍数时是问题;数为0时的2 数倍是1是多个的一些其他数目 数为2的2 数倍是3是多个的3 数为4的2 数倍是5是多个的一些其他数量 数是图6是2 数倍是7是多个的一些其他数目 数为8的2 数倍是图9是多重的3 数为10的2 数倍是图11是多一些其它数量的 数目是12是2的倍数 – ktm

+0

您是否看到我的最新更新? –

+0

谢谢你 – ktm

1

如果余数为零,您希望得到一个NOT if(i%2),因为它是一个倍数。

此外,如果你试图找到30的倍数,你只需要循环到15.或者数字/ 2。对于上述if条件

if ($i%6 === 0) { 
.... 
} 

+0

你的另外这里不适用,因为这不是目标 –

0
for($i = 0; $i < 30; $i++) 
{ 
if($i % 2 == 0) 
    echo 'number is '. $i . ' is multiple of 2 <br/>'; 
elseif($i % 3 == 0) 
    echo 'number is '. $i . 'is multiple of 3 <br/>'; 
else 
    echo 'number is '. $i . 'is multiple of some other number <br/>'; 
} 
0

我会在你的,如果条件

if($i%2 === 0 && $i%3 === 0) { 
    echo 'multiple of 2 and 3\n'; 
} 

它也可能是正确的使用增加一个条件。

如果您使用开关盒大小更好。