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

          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

          主站蜘蛛池模板: 峨眉山市| 淮安市| 新闻| 公主岭市| 东山县| 金昌市| 石柱| 吉隆县| 陕西省| 蓬溪县| 郸城县| 土默特左旗| 平果县| 裕民县| 陇川县| 鹤岗市| 新源县| 鹰潭市| 晴隆县| 西乌珠穆沁旗| 明星| 闽清县| 古丈县| 西乡县| 铁力市| 安陆市| 宣威市| 色达县| 都兰县| 玛沁县| 札达县| 金塔县| 曲水县| 景洪市| 来凤县| 扬州市| 霸州市| 株洲县| 新乡县| 津南区| 岐山县|