Lua脚本怎么写(输入两个正整数m和n,求其最大公约数和最小公倍数.lua脚本怎么写)

2024-09-21 08:30:49 :1

lua脚本怎么写(输入两个正整数m和n,求其最大公约数和最小公倍数.lua脚本怎么写)

本篇文章给大家谈谈lua脚本怎么写,以及输入两个正整数m和n,求其最大公约数和最小公倍数.lua脚本怎么写对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

输入两个正整数m和n,求其最大公约数和最小公倍数.lua脚本怎么写

-- 最大公约数(Greatest Common Divisor 的首字母缩写 gcd )-- 最小公倍数(lowest common multiple 的首字母缩写 lcm )function gcd(a, b)    -- gcd(m, n) * lcm(m, n) = a * b    -- local a, b = math.max(a, b), math.min(a, b) -- assert((a 》 0) and (b 》 0))    -- TODO优化效率: 使得b为绝对值较小的数时辗转相除次数较少,判定后需要考虑正负号使得结果与普通计算结果相同(需要验证)    local d_value = a % b    -- print(d_value)        if d_value == 0 then       return b  -- mathassert((m 》 0) and (n 》 0)).min(a, b)     end    return gcd(b, d_value)     endfunction lcm(a, b)    local lcm_num = a * b / gcd(a,b)    -- lcm_num = math.abs(lcm_num)  -- 看你的需要是否断言 lcm值为正数    return lcm_numend------------------------------------------------------------------------------------ main----------------------------------------------------------------------------------function main(...)    local m, n = 6, 9 -- 9, 6    local a, b = -28, 14    -- 前提 m, n 是正整数,则符合 gcd(m, n) * lcm(m, n) = m * n    assert((m%1 == 0) and (n%1 == 0))    assert((m 》 0) and (n 》 0))    local l1, g1 = lcm(m, n), gcd(m, n)    print(string.format("gcd(%s, %s) = %s", m, n, gcd(m, n)))    print(string.format("lcm(%s, %s) = %s", m, n, lcm(m, n)))    assert(g1 》= 1)    assert(l1 《= m * n)    assert(l1 * g1 == m * n)    -- 前提 a, b 是整数,则符合 |gcd(a, b) * lcm(a, b)| = |a * b|    assert((a%1 == 0) and (b%1 == 0))    local l2, g2 = lcm(a, b), gcd(a, b)    print(string.format("gcd(%s, %s) = %s", a, b, gcd(a, b)))    print(string.format("lcm(%s, %s) = %s", a, b, lcm(a, b)))    assert(math.abs(l2 * g2) == math.abs(a * b))endmain()-- 详细请见维基百科

罗技LUA脚本问题

若要调用外部Lua脚本,需要使用dofile。这很像C语言中的 #include“”用法:dofile ("路径")==================--File:E:\lua1.luadofile ("Hello.lua")print(a)==================--File: E:\Hello.luaa = 100====================输出==100

如何在C 中集成LUA脚本

1. 调用Lua脚本// 创建Lua解释器:LuaStateOwner state;// 执行Lua脚本:state-》DoString("print(’Hello World/n’)");// 载入Lua脚本文件并执行:state-》DoFile("C://test.lua");// 载入编译后的Lua脚本文件并执行:state-》DoFile("C://test.luac");2. 与Lua脚本互相调用// 为Lua脚本设置变量state-》GetGlobals().SetNumber("myvalue", 123456);// 获得Lua变量的值int myvalue = state-》GetGlobal("myvalue").GetInteger();// 调用Lua函数LuaFunction《int》 luaPrint = state-》GetGlobal("print");luaPrint("Hello World/n");// 让Lua调用C语言函数int add(int a, int b){ return a+b;}state-》GetGlobals().RegisterDirect("add", add);state-》DoString("print(add(3,4))");// 让Lua调用C++类成员函数class Test{public: int add(int a, int b){return a+b;}};Test test;state-》GetGlobals().RegisterDirect("add", test, add);state-》DoString("print(add(3,4))");3. 在Lua脚本中使用C++类这个稍微有点小麻烦。不过,我包装了一个LuaPlusHelper.h的文件,它可以很轻松的完成这个工作。它的实现也很简单,大家可以从源码上来获得如何用纯LuaPlus实现同样的功能。不过,这里仍然有一个限制没有解决:不能使用虚成员函数。不过考虑到我们仅是在Lua调用一下C++函数,并不是要将C++完美的导入到Lua,这个限制完全可以接受。另外,类成员变量不能直接在Lua中访问,可以通过类成员函数来访问(比如SetValue/GetValue之类)。// 下面是一个简单的C++类:class Logger{public:void LOGMEMBER(const char* message){printf("In member function: %s/n", message);}Logger(){printf("Constructing(%p).../n", this);v = 10;}virtual ~Logger(){printf("Destructing(%p).../n", this);}Logger(int n){printf(" -- Constructing(%p).../n", n, this);}Logger(Logger* logger){printf(" -- Constructing(%p).../n", logger, this);logger-》LOGMEMBER(" Call From Constructor/n");}int SetValue(int val){v = val;}int GetValue(){return v;}public:int v;};// 导入到Lua脚本:LuaClass《Logger》(state).create("Logger") // 定义构造函数 Logger::Logger().create《int》("Logger2") // 定义构造函数 Logger::Logger(int).create《Logger*》("Logger3") // 定义构造函数 Logger::Logger(Logger*).destroy("Free") // 定义析构函数 Logger::~Logger().destroy("__gc") // 定义析构函数 Logger::~Logger().def("lm", &Logger::LOGMEMBER) // 定义成员函数 Logger::LOGMEMBER(const char*).def("SetValue", &Logger::SetValue).def("GetValue", &Logger::GetValue);// 在Lua中使用Logger类(1):state-》DoString("l = Logger();" // 调用构造函数 Logger::Logger()"l.lm(’Hello World 1’);" // 调用成员函数 Logger::LOGMEMBER(const char*)"l.Free();" // 调用析构函数 Logger::~Logger());// 在Lua中使用Logger类(2):state-》DoString("m = Logger(10);" // 调用构造函数 Logger::Logger(int)"m.lm(’Hello World 2’);" // 调用成员函数 Logger::LOGMEMBER(const char*)"n = Logger(m);" // 调用构造函数 Logger::Logger(Logger*)"n.lm(’Hello World 3’);" // 调用成员函数 Logger::LOGMEMBER(const char*)"m.SetValue(11);""print(m.GetValue());""m,n = nil, nil;" // m,n 将由Lua的垃极回收来调用析构函数);4. 将一组C函数归类到Lua模块//同上面一样,我采用LuaPlusHelper.h来简化:LuaModule(state, "mymodule").def("add", add).def("add2", test, add);state-》DoString("print(mymodule.add(3,4));""print(mymodule.add2(3,4));");5. 使用Lua的Table数据类型// 在Lua中创建TableLuaObject table = state-》GetGlobals().CreateTable("mytable");table.SetInteger("m", 10);table.SetNumber("f", 1.99);table.SetString("s", "Hello World");table.SetWString("ch", L"你好");table.SetString(1, "What");// 相当于Lua中的:// mytable = {m=10, f=1.99, s="Hello World", ch=L"你好", "What"}// 也可以使用table作为key和value:state-》GetGlobals().CreateTable("nexttable").SetString(table, "Hello").SetObject("obj", table);// 相当于Lua中的:// nexttable = {mytable="Hello", obj=mytable}//获得Table的内容:LuaObject t2 = state-》GetGlobals("mytable");int m = t2.GetByName("m").GetInteger();LuaObject t3 = state-》GetGlobals("nexttable");std::string str = t3.GetByObject(t2).GetString();6 遍历TableLuaStateOwner state;state.DoString( "MyTable = { Hi = 5, Hello = 10, Yo = 6 }" );LuaObject obj = state.GetGlobals();for ( LuaTableIterator it( obj ); it; it.Next() ){const char* key = it.GetKey().GetString();int num = it.GetValue().GetInteger();}

游戏的LUA任务脚本要怎么写

1.在主城放置一个NPC介绍任务,NPC负责出售12个生肖布偶。周一到周五玩家每天上线都可以花费5个金币在NPC处购买到一个布偶(可自行选择)。2.玩家购买到的布偶的持续时间只能到当周日的晚上23:59分3.玩家每购买一个布偶就在彩池处累计5个金币,每卖出5个娃娃系统抽取5个金币,抽取的5个金币不累计入彩池。系统要记录每种布偶出售的数量。4.周六和周日开出当周幸运生肖布偶,随机从12个生肖中抽取1个作为中奖生肖,玩家可以直接点击背包中的布偶查询当周的幸运生肖,猜中得奖励,猜错返回经验。5.周末的时候将所有彩池中的70%金币的量平分给中奖的玩家,剩余的30%金币则累计到下一个星期的彩池中。6.每个月的最后一个周六下午15:00-16:59分进行回馈活动,将当周累计的30%金币中的10%部分系统扣除,10%部分返还给玩家。返还方式如下7.活动时间内在主城刷新很小的生肖NPC,放在角落,玩家点击到NPC直接获得1点金币8.全部返还后给提示活动结束,XXX个金币已经全部送出。如果金币没有送完则一直送到送完为止。

文章分享结束,lua脚本怎么写和输入两个正整数m和n,求其最大公约数和最小公倍数.lua脚本怎么写的答案你都知道了吗?欢迎再次光临本站哦!

lua脚本怎么写(输入两个正整数m和n,求其最大公约数和最小公倍数.lua脚本怎么写)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.