天天看點

Ruby中求50之内的素數方法

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>&lt;?php</code>

<code>echo</code> <code>"以下程式會輸出50以内的素數:"</code><code>;</code>

<code>for</code><code>($m=1;$m&lt;=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&lt;=$m;$i++){        </code><code>//</code><code>第二層循環,循環1-$m直接的所有數,$m&lt;=$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>?&gt;</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,如需轉載請自行聯系原作者