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

          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時循環即可中止 )

          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

          主站蜘蛛池模板: 锡林浩特市| 保定市| 田东县| 临桂县| 济阳县| 海原县| 衢州市| 武汉市| 贡山| 汾阳市| 五寨县| 铜山县| 伊金霍洛旗| 巍山| 镇远县| 潮州市| 禹城市| 定南县| 友谊县| 西安市| 神木县| 安庆市| 抚顺县| 自贡市| 淮南市| 贵州省| 肇州县| 新邵县| 富平县| 呼伦贝尔市| 松潘县| 扎兰屯市| 新宁县| 高州市| 汾阳市| 肥乡县| 勃利县| 长垣县| 道孚县| 宁乡县| 桂阳县|