【发布时间】:2021-06-15 07:03:57
【问题描述】:
我的任务是: 请实现 GetListOfPrimeNumbers 方法,该方法从参数列表中返回素数列表。 结果列表中的所有数字都应该是唯一的,不应将重复项添加到结果列表中。 如果它的唯一除数是 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;
什么是错误?请帮忙!
【问题讨论】:
-
将它们存储在哈希集中,而不是列表中。还要调查为什么你的代码认为
27和15是素数,而它们显然不是。 -
您不检查列表中是否已经存在号码,因此您多次添加相同的号码。
-
谢谢,我检查了列表中是否已经存在数字。这有助于避免重复
-
但我还有 27 和 15((
-
提示 -
numbers2.Add(x);应该在循环的外部,而不是在 else。
标签: c# list duplicates primes