Сформировать множества простых и составных чисел - C#
Формулировка задачи:
Имеется множество, содержащее натуральные числа из некоторого диапазона. Сформировать два множества, первое из которых содержит все простые числа из данного множества, а второе - все составные.
Код я написал, но программа не работает
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Proj_1
{
class Program
{
static bool Prost(int d)
{
if (d == 1)
{
return false;
}
else
{
for (int i = 2; i <= Math.Round(Math.Sqrt(d)); i++)
{
if (d %i == 0)
{
return false;
}
}
return true;
}
}
static void Main(string[] args)
{
List<int> a = new List<int>();
int x, y, g = 0;
Console.Write("X = ");
x = int.Parse(Console.ReadLine());
Console.Write("Y = ");
y = int.Parse(Console.ReadLine());
for (int i = x; i <= y; i++)
{
a.Add(i);
}
List<int> b = new List<int>();
List<int> c = new List<int>();
for (int i = 0; i < a.Count - 1; i++)
{
if (Prost(a[i]))
{
b.Add(a[i]);
}
}
for (int i = 0; i < a.Count; i++)
{
c.Add(a[i] - b[g]);
g++;
}
Console.WriteLine("\nМножество простых чисел: ");
foreach (var item in b)
{
Console.Write(item + " ");
}
Console.WriteLine("\nМножество составных чисел: ");
foreach (var item in c)
{
Console.Write(item + " ");
}
Console.ReadKey();
}
}
}Решение задачи: «Сформировать множества простых и составных чисел»
textual
Листинг программы
for (int i = 0; i < a.Count - 1; i++)
{
if (Prost(a[i]))
{
b.Add(a[i]);
}
else if (a[i] != 1)
{
c.Add(a[i]);
}
}