Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Diagnostics;
- using System.Threading.Tasks;
- namespace Lab2
- {
- class Program
- {
- static bool[] CreateNotSortedListForModified(int N)
- {
- bool[] primeNumbers = new bool[N + 1];
- primeNumbers[2] = true;
- for (int i = 3; i <= N; i += 2)
- {
- primeNumbers[i] = true;
- }
- return primeNumbers;
- }
- static bool[] GetPrimeNumbersModified(int N, bool[] primeNumbers)
- {
- int lenght = primeNumbers.Length / 4;
- int sqrtN = (int)Math.Sqrt(N);
- //Находим базовые простые числа, начиная с 3
- for (int i = 3; i < sqrtN; i++)
- {
- for (int j = i * 3; j < sqrtN; j += i * 2)
- {
- primeNumbers[j] = false;
- }
- }
- //Исключаем составные, проходясь по базовым (Вот это говно надо распараллелить. Только модифицированный работает у меня дольше, чем последовательный)
- for (int k = 3; k < lenght; k++)
- {
- if (primeNumbers[k])
- {
- for (int h = sqrtN; h <= N; h++)
- {
- if (h % k == 0)
- {
- primeNumbers[h] = false;
- }
- }
- }
- }
- return primeNumbers;
- }
- static void Show(bool[] primeNumbers)
- {
- for (int i = 0; i < primeNumbers.Length; i++)
- {
- if (primeNumbers[i] == true)
- {
- Console.Write("{0} ", i);
- }
- }
- }
- static void Main(string[] args)
- {
- int N = 1000;
- Stopwatch sw = new Stopwatch();
- sw.Start();
- bool[] primeNumbers = CreateNotSortedListForModified(N);
- bool[] sortedArray = GetPrimeNumbersModified(N, primeNumbers);
- sw.Stop();
- //Show(sortedArray);
- Console.WriteLine(sw.Elapsed.TotalMilliseconds);
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement