Sieve of Eratosthenes

Здравейте,

в моя трети пост искам да споделя едно просто решение за намиране на всички прости числа в даден интервал от цели числа. За целта ползвам един известен алгоритъм който се казва “Sieve of Eratosthenes” или преведено на български – “Сито на Ератостен”.

Идеята на алгоритъма е следната – имаме четири изходни числа – 2, 3, 5 и 7. Всички кратни на тези числа образуват множеството на сложните числа. Останалите, които не попадат в тази група (включително тези четири) са търсените от нас прости числа. Ефектът може да се види на картинката по-долу:

 

 

 

 

 

 

Решението на задачата следва принципа показан по-горе. Създава се масив от 10 000 000 елемента от булев тип с първоначална стойност false. След това с четири последователни цикъла  се намират всички кратни числа съответно на 2, 3, 5 и 7 и съответните елементи се променят на true. Накрая се проверяват кои числа са останали със стойност false – те са търсените от нас прости числа в зададения интервал.

using System;

class SieveOfErathostenes
{
    static void Main(string[] args)
    {
        int n = 10000000;
        bool[] numbers = new bool[n];

        numbers[0] = true;
        numbers[1] = true;
        numbers[2] = true;
        for (int i = 2; i < n; i += 2)
        {
            numbers[i] = true;
        }
        numbers[3] = true;
        for (int i = 3; i < n; i += 3)
        {
            numbers[i] = true;
        }
        numbers[5] = true;
        for (int i = 5; i < n; i += 5)
        {
            numbers[i] = true;
        }

        numbers[7] = true;
        for (int i = 7; i < n; i += 7)
        {
            numbers[i] = true;
        }

        Console.WriteLine("Prime numbers:");
        for (int i = 0; i < n; i++)
        {
            if (numbers[i] == true)
            {
                continue;
            }
            Console.Write("{0}, ", i);
        }
    }
}


 

Ново издание на Софтуерната Академия на Телерик!

 През 2012 година започва четвъртото поред издание на Софтуерната Академия на Телерик! Всички които имат интерес към програмирането и софтуерните технологии могат да се включат напълно безплатно към него.

Курсовете в Академията обхващат два модула

  • Модул 1Програмиране за начинаещи – изучава се “Основи на програмирането със С#”.
  • Модул 2 – Програмиране за напреднали – състои се от три направления – .NET Essentials, QA and Test Automation, Developer Support.

Тази година академията ще стартира в два формата – присъствен и онлайн.

При присъствения варият, курсистите ще имат възможността да посещават безплатно курса “Основи на програмирането със С#”, а при успешното му завършване ще могат да избират дали да продължат с изучаването на някое от трите направления от Модул 2. При успешно завършване на Модул 2, те ще имат реалния шанс да започнат работа в Телерик или в друга софтуерна компания. Приемът се извършва чрез входни тестове.

При онлайн варианта, курсистите имат шанса да завършат успешно курса “Основи на програмирането със С#”, но не участват в курсовете от Модул 2. Приемат се всички желаещи.

Академията на Телерик е много добро място за обучение на начинаещи софтуерни инженери без реален опит, както и за по-напреднали такива, които искат да увеличат своите знания и опит.

За повече информация може да разгледате по-подробно сайта на Академията: http://academy.telerik.com/academy/about.

My first post!

 

 

 

 

 

 

 

 

Hello everybody!

This is my first post and I am very glad that you’ve chosen to visit it!

My name is Angel Petkov and this is my personal blog. What you’ll find here is generally technical, programming and problem-solving articles as well as any interesting stuff from the computer world. I will try to periodically update it and provide you with exciting and useful content, that will be useful for you. So have a great time reading the articles and do not hesitate to give any feedback!

Happy blogging!