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();
我的任务是: 请实施 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();