ruby求50之内的素數的方法,感覺對比PHP和SHELL方法是最簡單的,但SHELL中可以利用factor指令,而PHP中沒有求素數的對應函數的,需要自己設計算法,三種方式大家對比學習下,應該還有更優更簡單的方法的。
1
2
3
4
5
6
7
8
9
10
11
12
13
<code>#encoding:utf-8</code>
<code>#求50以内的素數(注意數字中..與...的差別)</code>
<code>for</code> <code>i </code><code>in</code> <code>2</code><code>..</code><code>50</code> <code>#1預設不為素數,是以從1-50範圍内被排除</code>
<code> </code><code>f=</code><code>true</code> <code>#起始假定每個數都是素數</code>
<code> </code><code>for</code> <code>p </code><code>in</code> <code>2</code><code>...i </code><code>#比自身小的正整數(1和自身除外)</code>
<code> </code><code>if</code> <code>i%p==</code><code>0</code> <code>#如果能整除</code>
<code> </code><code>f=</code><code>nil</code><code>#那麼這個數不是素數</code>
<code> </code><code>break</code> <code>#并且跳出這層循環</code>
<code> </code><code>end</code> <code># if 結束</code>
<code> </code><code>end</code> <code>#内層循環結束</code>
<code> </code><code>print i,</code><code>" "</code> <code>if</code> <code>f </code><code>#如果這個數保持起始假定,則列印</code>
<code>end</code> <code>#外層循環結束</code>
PHP代碼如下:
14
<code><?php</code>
<code>echo</code> <code>"以下程式會輸出50以内的素數:"</code><code>;</code>
<code>for</code><code>($m=1;$m<=50;$m++){ </code><code>//</code><code>第一層循環,循環1-50直接的所有數</code>
<code> </code><code>$k=0; </code><code>//</code><code>計數器初始化 </code>
<code> </code><code>for</code><code>($i=1;$i<=$m;$i++){ </code><code>//</code><code>第二層循環,循環1-$m直接的所有數,$m<=$n</code>
<code> </code><code>if</code><code>($m%$i==0){ </code><code>//</code><code>取模運算,如果餘數為0,K自增1</code>
<code> </code><code>$k++;</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>if</code><code>($k==2){ </code><code>//</code><code>如果k的值等于1或者2,那麼是素數,将其輸出</code>
<code> </code><code>echo</code> <code>$m.</code><code>" "</code><code>;</code>
<code> </code><code>}</code>
<code>}</code>
<code>?></code>
SHELL的方式略為簡單些,代碼如下:
<code>#!/bin/bash</code>
<code>#factor是shell指令,可以求出後面所接數字中的所有素數。</code>
<code>for</code> <code>i </code><code>in</code> <code>{2..50}</code>
<code>do</code>
<code> </code><code>factor $i | </code><code>awk</code> <code>-F </code><code>'[: ]'</code> <code>'{if(NF == 3) print $1}'</code>
<code>done</code>
<code></code>
本文轉自 撫琴煮酒 51CTO部落格,原文連結:http://blog.51cto.com/yuhongchun/1579176,如需轉載請自行聯系原作者