Ruby中求50之內的素數方法

karspb發表於2021-09-09


ruby求50之內的素數的方法,感覺對比PHP和SHELL方法是最簡單的,但SHELL中可以利用factor命令,而PHP中沒有求素數的對應函式的,需要自己設計演算法,三種方式大家對比學習下,應該還有更優更簡單的方法的。

#encoding:utf-8

#求50以內的素數(注意數字中..與...的區別)

for i in 2..50 #1預設不為素數,所以從1-50範圍內被排除

    f=true #起始假定每個數都是素數

    for p in 2...i #比自身小的正整數(1和自身除外)

    if i%p==0 #如果能整除

      f=nil#那麼這個數不是素數

      break #並且跳出這層迴圈

        end # if 結束

    end #內層迴圈結束

    print i," " if f #如果這個數保持起始假定,則列印

end #外層迴圈結束

PHP程式碼如下:

<?php

echo "以下程式會輸出50以內的素數:";

for($m=1;$m<=50;$m++){   //第一層迴圈,迴圈1-50直接的所有數

  $k=0;                                 //計數器初始化 

    for($i=1;$i<=$m;$i++){        //第二層迴圈,迴圈1-$m直接的所有數,$m<=$n

      if($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

©著作權歸作者所有:來自51CTO部落格作者撫琴煮酒的原創作品,如需轉載,請註明出處,否則將追究法律責任

素數ruby程式碼求1-50之內運維開發(DevOps)篇


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2001/viewspace-2822198/,如需轉載,請註明出處,否則將追究法律責任。

相關文章