一個求素數的算法(不懂)

          Posted on 2008-05-05 15:18 xan 閱讀(417) 評論(2)  編輯  收藏
            def  is_prime?(number)   #定義方法  判斷數number是否是素數
              j=2                                #數組下標
              while  $arr[j] * $arr[j] <=number     #$arr[] 是一個數組,記錄number之前的素數,搞不懂為什么可以這么寫
                return false  if  number  %  $arr[j] ==0
                j +=1
              end
              return true
            end

          土人求教

          Feedback

          # re: 一個求素數的算法(不懂)  回復  更多評論   

          2008-05-08 12:17 by 鄭暉
          while $arr[j] * $arr[j] <=number (若number有一大于其平方根的因子,則必有小于其平方根的因子,在此之前必已返回false。故此當$arr[j] * $arr[j] >number時循環(huán)即可中止 )

          return false if number % $arr[j] ==0(如果number能被arr[j]整除,當然不是素數,故返回false)

          # re: 一個求素數的算法(不懂)  回復  更多評論   

          2008-05-08 14:10 by xan
          @鄭暉
          $arr[] 數組存儲的是小于number的素數集合
          return false if number % $arr[j] ==0 $arr[j] 是小于number的某一個素數
          這就是我搞不懂的,實際上,我們熟知的判斷素數方法是:
          for(i=0; i<sqrt(number); i++) // 或者 i*i < number
          {
          if(number%i == 0) return false;
          }
          return true;

          你說的是這個吧

          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           

          posts - 36, comments - 2, trackbacks - 0, articles - 0

          Copyright © xan

          主站蜘蛛池模板: 纳雍县| 古交市| 阳信县| 渭南市| 望城县| 泾川县| 新宾| 道真| 巩义市| 湖口县| 武功县| 名山县| 仁寿县| 茶陵县| 重庆市| 宣威市| 泸州市| 宝山区| 元朗区| 台前县| 蒙阴县| 崇州市| 都江堰市| 五华县| 九江县| 阿拉善左旗| 太湖县| 楚雄市| 云和县| 稻城县| 隆林| 谷城县| 卓尼县| 锦州市| 绥宁县| 射洪县| 青铜峡市| 房产| 崇文区| 托克逊县| 陕西省|