计算质数和回文数的小程序

简介: Ruby 代码如下   1: def isZhishu?(num) 2: count = 2 3: while count < num do 4: return false if ( num % ...
Ruby 代码如下
 
   1:  def isZhishu?(num)
   2:      count = 2
   3:      while count < num do
   4:          return false if ( num % count ) == 0
   5:          count = count + 1
   6:      end
   7:   
   8:      return true
   9:  end
  10:   
  11:  def isHuiwen?(num)
  12:      s = num.to_s.reverse.to_i
  13:      return true if num == s
  14:   
  15:      return false
  16:  end
  17:   
  18:  count = 0
  19:  10000.times{ |i|
  20:      i = i + 1
  21:      if isZhishu?(i) && isHuiwen?(i) then
  22:          printf "%4d", i
  23:          print "\n"
  24:          count = count + 1
  25:      end
  26:  }
  27:  print "\n\nTotal:#{count}"

 

上面这个方法非常笨重,时间复杂度是 O(n^2),可以进行一些优化。根据 @sdpfoue 的建议,做了优化。

首先就是可以只对大于3的奇数进行检查,因为偶数肯定可以被2整除,所以不需要考虑。

另外循环相除的时候,可以只除以质数,这样也能够减少不少步骤。但是会增加空间的消耗,就是所谓的用空间换时间。

具体代码如下:

   1:  def isZhishu?(num, arrZhishu)
   2:      return true if num == 1 || num == 2
   3:      count = 2
   4:   
   5:      if( arrZhishu.empty? )then
   6:          #count = 2
   7:          while count < num do
   8:              return false if ( num % count ) == 0
   9:              if( count >= 11 ) then
  10:                  count = count + 2 # Only judge even numbers
  11:              else
  12:                  count = count + 1
  13:              end
  14:          end
  15:   
  16:          return true
  17:      else
  18:          arrZhishu.each{|value|
  19:              next if value == 1
  20:              return false if ( num % value ) == 0
  21:          }
  22:          return true
  23:      end
  24:  end
  25:   
  26:  def isHuiwen?(num)
  27:      s = num.to_s.reverse.to_i
  28:      return true if num == s
  29:   
  30:      return false
  31:  end
  32:   
  33:  count = 0
  34:  arrZhishu = Array.new
  35:  i = 0
  36:  while i < 10000000 do
  37:      if i >= 11 then
  38:          i = i + 2
  39:      else
  40:          i = i + 1
  41:      end
  42:   
  43:      if isZhishu?(i, arrZhishu) && isHuiwen?(i) then
  44:          arrZhishu.push(i)
  45:          #printf "%4d", i
  46:          #print "\n"
  47:          count = count + 1
  48:      end
  49:  end
  50:  print "\n\nTotal:#{count}"
相关文章
|
JSON 小程序 JavaScript
小程序数据渲染根据返回值计算百分比并且显示
小程序数据渲染根据返回值计算百分比并且显示
178 0
|
小程序
微信小程序:计算属性和监听属性miniprogram-computed
微信小程序:计算属性和监听属性miniprogram-computed
1135 0
|
小程序 Python
如何用python制作一个锻炼计算能力的exe小程序-学习笔记11-pyinstaller
如何用python制作一个锻炼计算能力的exe小程序-学习笔记11-pyinstaller
345 0
如何用python制作一个锻炼计算能力的exe小程序-学习笔记11-pyinstaller
|
小程序 Python
python编写一个计算小程序-学习笔记8
python编写一个计算小程序-学习笔记8
274 0
python编写一个计算小程序-学习笔记8
|
小程序 Python
python最简单的小程序-计算行车时间-学习笔记6
python最简单的小程序-计算行车时间-学习笔记6
234 0
python最简单的小程序-计算行车时间-学习笔记6
|
小程序 Python
python设计的最简单小程序-学习笔记5-计算饭费
python设计的最简单小程序-学习笔记5-计算饭费
363 0
python设计的最简单小程序-学习笔记5-计算饭费
|
自然语言处理 小程序 算法
Python程序设计的基本方法与带你入门Python小程序:斐波那契数列的计算、圆面积的计算、程序运行计时、绘制五角红星、绘制七彩圆圈
Python程序设计的基本方法与带你入门Python小程序:斐波那契数列的计算、圆面积的计算、程序运行计时、绘制五角红星、绘制七彩圆圈
Python程序设计的基本方法与带你入门Python小程序:斐波那契数列的计算、圆面积的计算、程序运行计时、绘制五角红星、绘制七彩圆圈
|
小程序 数据管理 定位技术
小程序中计算距离信息
小程序中计算距离信息
小程序中计算距离信息
|
小程序
微信小程序 日期比较,计算天数
微信小程序 日期比较,计算天数
1123 0
|
小程序
微信小程序:计算属性和监听属性miniprogram-computed
微信小程序:计算属性和监听属性miniprogram-computed
1409 0