C#: Простые числа методом Решета Эратосфена

Недавно писал уже о нахождении простых чисел методом перебора. Метод конечно работает, но у него есть одна проблема — медленный он.Чуть более быстрый метод — это решето Эратосфена.

Описание алгоритма из Википедии:

Для нахождения всех простых чисел не больше заданного числа n, следуя методу Эратосфена, нужно выполнить следующие шаги:

  1. Выписать подряд все целые числа от двух до n (2, 3, 4, …, n).
  2. Пусть переменная p изначально равна двум — первому простому числу.
  3. Считая от p шагами по p, зачеркнуть в списке все числа от 2p до n кратные p (то есть числа 2p, 3p, 4p, …)
  4. Найти первое не зачеркнутое число, большее чем p, и присвоить значению переменной p это число.
  5. Повторять шаги 3 и 4 до тех пор, пока p не станет больше, чем n

Continue reading

C#: Простые числа методом перебора

Простые числа. Иногда появляется необходимость определить простое ли число или нет.

Если взять теорию, то простое число-это такое число, которое делится только на себя и на единицу.

Для того, что бы узнать, число является или не является простым, нужно либо перебрать все числа до этого числа, либо, по одной из теорем, достаточно перебрать все числа до корня из этого числа.

Continue reading

С++: Быстрая сортировка (qsort, quick sort)

Есть у меня реализация быстрой сортировки на си. Алгоритм классический, но применять его можно- это раз и задают его в школах\вузах на разных языках-это два.

Continue reading

Получение списка сайтов кредитных огранизаций России с сайта ЦБ РФ (XML в PHP)

Когда-то была задача получить и обработать список банков России, при этом должна быть надежность и достоверность информации. Информацию нашел на сайте ЦБ РФ, на мое счастье, там очень любят разработчиков и нам предоставляют данные в удобном XML-формате. Таким образом, задача свелась к тому, чтобы просто разобрать (пропарсить) XML и извлечь данные. Я покажу функцию, которая будет печатать список сайтов банков на лист.

[php]

function print_banks_list()
{
$xmlString = file_get_contents(«http://www.cbr.ru/credit/GetAsXML.asp»);
$xml = new SimpleXMLElement($xmlString);
foreach($xml->Bnk as $Bnk)
{
foreach($Bnk->Itm as $Itm)
{
echo($Itm[url] . ‘<br />’);
}
}
return 0;
}

[/php]

Получилась процедура какая-то, а не функция, но внутрь можно вписать хоть что… У меня это работало в паре с MySQL.

И еще такой моментик:

[php]
$Bnk[name]

[/php]

Так можно обратиться к названию банка, правда, оно не всегда бывает в правильной кодировке, но для этого можно использовать функцию iconv, примерно так:

[php]
$bname = iconv(‘UTF-8’, ‘Windows-1251’, $Bnk[name]);
[/php]

В примере он переводит из UTF-8 в Windows-1251.

О Виртуальных машинах. Кратко

А вы знаете что такое виртуальная машина? По-хорошему, определение можно глянуть в Википедии, но если кратко-это компьютер в компьютере.

«Виртуалки» могут помочь при тестировании приложений. С их помощью можно моделировать разные ситуации, например:

  • Пониженное разрешение — чем не netbook?
  • Мало оперативной памяти — старый компьютер вот он

Continue reading

Pascal, Си/C++, C# Определение совершенного числа

Иногда задают задачи по нахождению совершенного числа.

Как гласит Википедия, Совершенное число это :

натуральное число, равное сумме всех своих собственных делителей (т. е. всех положительных делителей, отличных от самого числа).

Continue reading

C#: Движение элемента формы по кругу

Есть такая задача: Двигать контрол формы по кругу. В моем случае таким элементом стал Picturebox.Сразу оговорюсь, представленный ниже код писал не я :)

[csharp]

private void _cicrcleMotion(PictureBox pic)
{
float DEG2RAD = (float)(3.14159 / 180);
double x, y, degInRad;
for (int i = 0; i < 360; i++)
{
degInRad = i * DEG2RAD;
x = Math.Cos(degInRad) * 100 + 100 + 50;
y = Math.Sin(degInRad) * 100 + 100 + 50;
pic.Left = (int)x;
pic.Top = (int)y;
}
}

[/csharp]

Функция в данном случае принимает PictureBox и крутит его (весьма быстро) по форме.

 

Pascal. Школьная задачка. Перевод из номера дня в году в название месяца и дня в месяце

Опять про старое, изжитое, но очень хорошо известное старое. Ко мне когда-то обращались за помощью с такой задачей:

Напишите программу, которая принимает номер дня в году а выводит название месяца и номер дня в этом месяце. Использовать циклы. Реализация на Pascal.

Оформлена как программа.

Continue reading