returns 参数列表中的素数列表,结果列表中的所有数字都应该是唯一的

returns a list of prime numbers from the argument list, all numbers in the result list should be unique

我的任务是: 请实施 GetListOfPrimeNumbers 方法,该方法 returns 参数列表中的素数列表。 结果列表中的所有数字都应该是唯一的,不应将重复项添加到结果列表中。 如果它的唯一分隔符是 1 和这个数字本身,那么这个数字就是质数。 禁止使用 Linq

给出的数字: {23}{27}{29}{5}{30}{8}{19}{29}{26}{8}{17}{24}{19}{4}{4}{9}{15 {6}{9}{29}

预计:{23}{29}{5}{19}{17}

实际:{23}{27}{29}{5}{19}{29}{17}{19}{9}{15}{9}{29}

我写过这段代码:

        List<int> numbers2 = new List<int>();
        foreach (int x in numbers)
        {
            for (int i = 2; i < x; i++)
            {
                if (x % i == 0)

                {

                    break;
                }
                else
                {
                    numbers2.Add(x);
                    break;
                }

            }

        }
       
        for (int i = 0; i < numbers2.Count-1; i++)
        {
            if (numbers2[i] == numbers2[i + 1])
            {
                numbers2.Remove(numbers2[i]);
            }
        }
        for (int i = 0; i < numbers2.Count - 1; i++)
        {
            if (numbers2[i] == numbers2[i + 1])
            {
                numbers2.Remove(numbers2[i]);
            }
        }
        return numbers2;

哪里出错了?请帮忙!

你可以试试:)

int[] nums = { 23, 27, 29, 5, 30, 8, 19, 29, 26, 8, 17, 24, 19, 4, 4, 9, 15, 6, 9, 29 };
        List<int> numbers = nums.ToList();
        List<int> numbers2 = new List<int>();
        foreach (int number in numbers)
        {
            bool IsprimeNumber = true;
            long value = Convert.ToInt32(Math.Sqrt(number));
            if (number % 2 == 0)
            {
                IsprimeNumber = false;
            }
            for (long i = 3; i <= value; i = i + 2)
            {
                if (number % i == 0)
                {
                    IsprimeNumber = false;
                    break;
                }

            }
            if (IsprimeNumber)
            {
                if (!numbers2.Contains(number))
                {
                    numbers2.Add(number);
                }
            }
        }
        foreach (int numero in numbers2)
        {
            Console.WriteLine(numero);
        }
        Console.ReadLine();