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()