lua 函数练习

  1 --逻辑表达式
  2 
  3 --1+2+3+...+n
  4 function fun1(n)
  5     local sum = 0
  6     for i=1,n do
  7         sum = sum + i
  8     end
  9     return sum
 10 end
 11 
 12 -- 计算奇数和 
 13 function fun2(n)
 14     local sum = 0
 15     for i=1,n,2 do
 16         sum = sum + i
 17     end
 18     return sum
 19 end
 20 
 21 -- 计算偶数和
 22 function fun3(n)
 23     local sum = 0
 24     for i=2,n,2 do
 25         sum = sum + i
 26     end
 27     return sum
 28 end
 29 
 30 -- 计算n!
 31 function fun4(n)
 32     local sum = 1
 33     for i=1,n do
 34         sum = sum * i
 35     end
 36     return sum
 37 end
 38 
 39 -- 计算1+2!+3!+...+n!
 40 function fun5(n)
 41     local sum,t=0,1
 42     for i=1,n do
 43         t = 1
 44         for j=1,i do
 45             t = t * j
 46         end
 47         sum = sum + t
 48     end
 49     return sum
 50 end
 51 
 52 -- 计算 1+ 1/1! +1/2! +1/3! + ...+1/n!
 53 function fun6(n)
 54     local sum=1
 55     for i=1,n do
 56         sum = sum + 1/fun4(i)
 57     end
 58     return sum
 59 end
 60 
 61 -- 判断n是否为素数(质数)
 62 function fun7(n)
 63     io.write(n)
 64     local t = math.sqrt(n)
 65     for i=2,t do
 66         if n%i==0 then
 67             return false
 68         end
 69     end
 70     return true
 71 end
 72 
 73 -- 1000以内的水仙花数 如 153 = 1^3 + 5^3 + 3^3
 74 function fun8()
 75     local sum = 0
 76     local i,j,k=0
 77     for num=101,999 do
 78         i = math.floor(num/100)
 79         j = math.floor(num%100/10)
 80         k = num%10
 81         if num == i^3 + j^3 + k^3  then
 82             print(num)
 83         end
 84     end
 85 end
 86 
 87 table_str = '0123456789abcdefghijklmnopqrstuvwxyz'
 88 -- 将10进制数转换为二进制数
 89 function fun9( n )
 90     local ys = n % 2
 91     n = math.floor(n/2)
 92     if n~=0 then
 93         fun9(n)
 94     end
 95     io.write(string.sub(table_str,ys+1,ys+1))
 96 end
 97 -- 将10进制数转换为八进制数
 98 function fun10( n )
 99     local ys = n % 8
100     n = math.floor(n/8)
101     if n~=0 then
102         fun10(n)
103     end
104     io.write(string.sub(table_str,ys+1,ys+1))
105 end
106 
107 -- 将10进制数转换为十六进制数
108 function fun11( n )
109     local ys = n % 16
110     n = math.floor(n/16)
111     if n~=0 then
112         fun11(n)
113     end
114     io.write(string.sub(table_str,ys+1,ys+1))
115 end
116 
117 -- 将10进制数转换为N进制数
118 function fun12( n ,N)
119     local ys = n % N
120     n = math.floor(n/N)
121     if n~=0 then
122         fun12(n,N)
123     end
124     io.write(string.sub(table_str,ys+1,ys+1))
125 end
126 
127 
128 function main( )
129     print(fun1(100))
130     print(fun2(10))
131     print(fun3(10))
132     print(fun4(10))
133     print(fun5(4))--1+2+6+24 
134     print(fun6(20))
135     print(fun7(20) and '是素数!' or '不是素数')
136     print(fun7(13) and '是素数!' or '不是素数')
137     fun8() -- 水仙花
138     fun9(100);print('')--转换为二进制
139     fun10(100);print('')--转换为八进制
140     fun11(100);print('')--转换为十六进制
141     fun12(100,36);print('')--转换为36进制
142 end
143 
144 main()

 

posted @ 2014-06-18 20:02  Please Call me 小强  阅读(650)  评论(0编辑  收藏  举报