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

          Posted on 2008-05-05 15:18 xan 閱讀(409) 評論(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時循環即可中止 )

          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;

          你說的是這個吧

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


          網站導航:
           

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

          Copyright © xan

          主站蜘蛛池模板: 信宜市| 鸡东县| 石狮市| 宁晋县| 阿拉善盟| 云霄县| 紫阳县| 富阳市| 惠来县| 石阡县| 民权县| 宁陵县| 墨竹工卡县| 锡林浩特市| 唐海县| 滦南县| 祁阳县| 萨迦县| 长乐市| 收藏| 施甸县| 渝北区| 张北县| 滕州市| 隆子县| 大埔区| 仙居县| 保靖县| 苏尼特右旗| 增城市| 韶山市| 鸡西市| 泰宁县| 临颍县| 博白县| 天全县| 凤山县| 石狮市| 凉城县| 靖宇县| 扎赉特旗|