10个学生编号1-10围坐一圈,1-3报数,报3的退出,求最后剩下的是谁?要C#语言

10个学生编号1-10围坐一圈,1-3报数,报3的退出,求最后剩下的是谁?要C#语言

不要复制粘贴的,不要抄来的,不要链接,不要别的语言的。请看清楚。

定义人员
public class bsren
{
public string name { set; get; }
public bool isThree { set; get; }

    public bsren()
    { }

    public bsren(string _name)
    {
        name = _name;
        isThree = false;
    }
}

    初始化人员
    List<bsren> list = new List<bsren>();
        list.Add(new bsren("测试人01"));
        list.Add(new bsren("测试人02"));
        list.Add(new bsren("测试人03"));
        list.Add(new bsren("测试人04"));
        list.Add(new bsren("测试人05"));
        list.Add(new bsren("测试人06"));
        list.Add(new bsren("测试人07"));
        list.Add(new bsren("测试人08"));
        list.Add(new bsren("测试人09"));
        list.Add(new bsren("测试人10"));
                    //设定开始报数
        int m = 1;
        while (list.Count > 2)
        {
            for (int i = 0; i < list.Count; i++)
            {
                if (m % 3 == 0)
                {
                    list[i].isThree = true;
                }
                if (m == 3)
                {
                    m = 1;
                }
                else
                {
                    m++;
                }
            }
            for (int j = list.Count - 1; j > -1; j--)
            {
                if (list[j].isThree)
                {
                    list.RemoveAt(j);
                }
            }
        }
        string msg = "最后剩下的人:";
        foreach (bsren obj in list)
        {
            msg = msg + obj.name + "\r\n";
        }
        MessageBox.Show(msg);
                    List<string> LStr = new List<string>() { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
        while (LStr.Count >= 3)
        {
            LStr.AddRange(new List<string> { LStr[0], LStr[1] });
            LStr.RemoveRange(0,3);
        }
        return LStr[0];