首页 > 代码库 > lua 函数练习

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 % 8100     n = math.floor(n/8)101     if n~=0 then102         fun10(n)103     end104     io.write(string.sub(table_str,ys+1,ys+1))105 end106 107 -- 将10进制数转换为十六进制数108 function fun11( n )109     local ys = n % 16110     n = math.floor(n/16)111     if n~=0 then112         fun11(n)113     end114     io.write(string.sub(table_str,ys+1,ys+1))115 end116 117 -- 将10进制数转换为N进制数118 function fun12( n ,N)119     local ys = n % N120     n = math.floor(n/N)121     if n~=0 then122         fun12(n,N)123     end124     io.write(string.sub(table_str,ys+1,ys+1))125 end126 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 end143 144 main()