標籤:ruby 素數 php和shell對比 50之內
求50之內的素數,ruby的代碼如下:
#encoding:utf-8#求50以內的素數(注意數字中..與...的區別)for i in 2..50 f=true #起始假定每個數都是素數 for p in 2...i #比自身小的正整數(1和自身除外)if i%p==0 #如果能整除f=!f #那麼這個數不是素數break #並且跳出這層迴圈 end # if 結束 end #內層迴圈結束 print i," " if f #如果這個數保持起始假定,則列印end #外層迴圈結束
PHP代碼如下:
<?phpecho "以下程式會輸出50以內的素數:";for($m=2;$m<=50;$m++){ //第一層迴圈,迴圈1-50直接的所有數$k=0; //計數器初始化 for($i=1;$i<=$m;$i++){ //第二層迴圈,迴圈1-$m直接的所有數,$m<=$nif($m%$i==0){ //模數運算,如果餘數為0,K自增1$k++;}}if($k==2){ //如果k的值等於1或者2,那麼是素數,將其輸出echo $m." ";}}?>
SHELL的方式略為簡單些,代碼如下:
#!/bin/bash#factor是shell命令,可以求出後面所接數字中的所有素數。for i in {2..50}do factor $i | awk -F ‘[: ]‘ ‘{if(NF == 3) print $1}‘done
另外,吐個槽,怎麼在編輯器下排好版的代碼粘貼到部落格中,代碼對應就自動消失了呢?另外,如果用常規方式,三種語言寫法都很類似;本來以為PHP中有求素數的函數的,後來沒有,需要自己設計演算法,這一點就沒有SHELL方便了。
本文出自 “撫琴煮酒” 部落格,請務必保留此出處http://yuhongchun.blog.51cto.com/1604432/1579176
Ruby、PHP與SHELL中求50之內的素數方法