KostyeFromHelen
15. Листы, foreach, goto - поиск простых чисел
12.05.2011 05:32:49

Читал недавно одну книгу про простые числа. Это числа, которые делятся только на себя и на единицу. Все остальные числа составные, их можно представить как произведение простых чисел.Вот и решил написать программу, чтобы она искала простые числа.
Пояснения к коду смотри ниже.

static void Main(string[] args)
{
List prCh  = new List();
prCh.Add(2);
for (int i = 3; i < 17000; i++)
{
foreach(int ch in prCh)
{
if (i % ch == 0)
{
goto L;
}

}
prCh.Add(i);
L:  continue;
}

foreach (int ch in prCh)
{
Console.Write(ch + " ");
}
}

Лист представляет собой строго типизированный список объектов. В лист prCh будем добавлять найденные простые числа. Алгоритм такой: мы каждое число делим на простые числа в листе, если ни на одно из чисел не делится, значит наше число простое. Для этого добавим первое простое число в лист. Это число 2.

Мы будем использовать цикл foreach, этот цикл используется только для чтения. Мы не можем изменять наш лист в цикле, поэтому добавление нового числа(prCh.Add(i);) мы вынесли за цикл. Поэтому, если наше текущее число не является простым, мы должны перепрыгнуть строчку добавления. Для этого мы используем конструкцию goto L; L - это любая метка в коде, на которую мы перепрыгиваем. Около метки стоит ключевое слово continue, которое говорит о том, что мы перейдём к следующей итерации нашего основного цикла for.

В самом конце мы просто выводим все объекты нашего листа.

P.S. Знак % вычисляет остаток от деления.




Теги: List C# | goto C# | поиск простых чисел C# | foreach C#


 

Артём
07.02.2012 11:14:42

P.S. Знак % вычисляет остаток от деления.
Я так и не понял, каким образом вычисляется остаток символом %
Я видел примеры в разных источниках, например, 5%2 // остаток будет 1
10%3 // остаток также будет 1
Объясните плиз, если можно на имейл, спасибо.

 
Артём
07.02.2012 11:20:11

Забыл имейл написать, пришлите пояснения по моему вопросу, плиз Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript

 
admin
07.02.2012 11:50:52

в третьем классе это проходят =)
ответил

 
Аноним
07.04.2012 12:26:58

"Использование универсального типа System.Collections.Generic.List<T> требует аругменты типа "1""
Вот такая у меня ошибка, причём двойная и указывает на "List", что делать?

 
admin
07.04.2012 12:29:55

Объяви лист так:
List<string> list = new List<string>(); //ну или int, double, смотря какие данные хрант лист

У меня студии сейчас нету, но вроде так должно работать

 
Аноним
08.04.2012 13:18:30

Ну вот вроде всё заработало, только когда я вывожу всё это дело на richBox, то у меня выводится только конечное простое число...А мне нужно что бы все по очереди))

 
admin
08.04.2012 16:24:50

Добавляй лучше в листбокс
listBox1.Items.Add(ch);

 
Аноним
08.04.2012 16:58:49

Во, с листбоксом всё работает, но мне бы ричтекстбокс, или просто текстбокс если можно)

 
admin
08.04.2012 16:59:54

RichTextBox.Text =+ ch;
Ты наверно просто = ставишь, а надо =+

 
Аноним
08.04.2012 17:06:04

Только +=))
Спасибо большое, побольше бы уроков сюда)

 
admin
08.04.2012 17:19:29

Да на самом деле уже много в интернете и примеров и уроков, книжек уже полно. Было бы желание как говорится)а лучше всего просто ставить себе цель что-нибудь запрогать и делать, что не получается искать в интернете.

 


Программируем на C#, интересные статьи, книги, музыка; Костя Карпов.