Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
Vlad0709
0 / 0 / 0
Регистрация: 02.04.2011
Сообщений: 8
#1

Реализовать заданный алгоритм решета Эратосфена - C#

05.03.2013, 19:55. Просмотров 483. Ответов 2
Метки нет (Все метки)

Ввод нечетное натуральное n.
Вывод всех нечетных, положительных, простых <=n.
алгоритм
1. Создаем массив A c ((n-1)/2) ячейками каждой из которых присвоено значения 1. Полагаем p=3.
2.Если p*p>n, вычисляем все числа 2*і+1 для которых значения i - ой ячейки равно 1 и останавливаемся, в противном
случае переходим К ШАГУ 3.
3.Если А с номером ((p-1)/2) равно 0, увеличиваем p на 2, и возвращаемся к шагу 2, в противном случае шаг 4.
4. Присваиваем новой переменной Т значения p*p, заменяем нулем значения ячейки массива А под номером ((Т-1)/2),
и увеличиваем Т на 2*p. Повторяем эти 2 шага до тех пор пока Т<n, заитем увеличиваем p на 2 и возвр. к шагу 2.








Вот что у меня вышло, но я уверен что здесь неправильно.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 int n,p,T ;
            do
            {
                Console.WriteLine("Введите нечетное число ");
                n = int.Parse(Console.ReadLine());
            } while (n % 2 == 0);
 
            int a = ((n-1)/2);
//--------------------------------------------------------
            Double[] V = new Double[a];
            for (int i = 0; i < a; i++)
            {
                V[i] = 2*i+1;
               // Console.Write(V[i]);
            }
            p = 3;
 
        label1: for (int i = 0; i < Math.Sqrt(a); i++)
              {
 
          if (p * p > n)
                {
                    if (V[i] == 1)
                    {
                        Console.WriteLine(V[2 * i + 1]);
                       
                    } break;
                }
                else
                    if (V[(p - 1) / 2] == 0)
                        p += 2;
 
            }
            
                T = p ^ 2;
                while (T >= n) 
            {
                V[(T - 1) / 2] = 0;
                T =+ 2 * p;
            }
          
                p+=2;
                goto label1;
помогите пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2013, 19:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализовать заданный алгоритм решета Эратосфена (C#):

Алгоритм Эратосфена - C#
Help!!!! 1. Реализовать функцию нахождения всех простых чисел в диапазоне от 1 до101. Сгенерированные числа сохранить в массиве....

Поиск 2х взаимнопростых чисел из решета Эратосфена - C#
В общем столкнулся с задачкой. У меня есть Список простых числе от 1 до N представленных списком. Нужно выбрать 2 случайных числа что бы...

Алгоритм "Решето Эратосфена": Разработать метод для определения простого числа - C#
Для решения задачи использовать массивы. Разработать: 1.Метод для определения простого числа. 2.Метод вывода простых чисел на консоль. ...

Реализовать алгоритм Прима - C#
Вот код using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; ...

Не могу реализовать алгоритм с FileStream - C#
Здравствуйте. Не могу реализовать алгоритм с помощью чтения из файла (FileStream). Помогите пожалуйста. using System; using...

Реализовать алгоритм симплекс-метода - C#
Дана система линейных уравнений (СЛУ). Реализовать алгоритм симплекс-метода. Помогите решить

2
tezaurismosis
Администратор
Эксперт .NET
8145 / 3555 / 503
Регистрация: 17.04.2012
Сообщений: 8,187
Записей в блоге: 14
05.03.2013, 20:16 #2
1) Не используйте goto. Совсем. Иначе рано или поздно придёте к "спагетти-коду".
2) T = p ^ 2; в C# этот оператор означает "исключающее-ИЛИ", а вы, видимо, подразумевали его как возведение в степень. Используйте n*n или Math.Pow(n, pow)
3) Вставьте в своём сообщении код в тег [CSHARP], читать невозможно.
0
Vlad0709
0 / 0 / 0
Регистрация: 02.04.2011
Сообщений: 8
05.03.2013, 20:20  [ТС] #3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
int n,p,T ;
do
{
Console.WriteLine("Введите нечетное число ");
n = int.Parse(Console.ReadLine());
} while (n % 2 == 0);
 
int a = ((n-1)/2);
//--------------------------------------------------------
Double[] V = new Double[a];
for (int i = 0; i < a; i++)
{
V[i] = 2*i+1;
// Console.Write(V[i]);
}
p = 3;
 
label1: for (int i = 0; i < Math.Sqrt(a); i++)
{
 
if (p * p > n)
{
if (V[i] == 1)
{
Console.WriteLine(V[2 * i + 1]);
 
} break;
}
else
if (V[(p - 1) / 2] == 0)
p += 2;
 
}
 
T = p * p;
while (T >= n) 
{
V[(T - 1) / 2] = 0;
T =+ 2 * p;
}
 
p+=2;
goto label1;
подскажите как написать цикл так, что бы избавится от goto?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2013, 20:20
Привет! Вот еще темы с ответами:

Реализовать алгоритм Флойда-Уоршалла - C#
Здравствуйте. Я понимаю, что уже неоднократно разбирался алгоритм Флойда-Уоршалла, но у меня всё равно не получается довести до ума. Хочу...

Реализовать алгоритм шифрования Хаффмана - C#
2. Шифрование Хаффмана namespace System.Algorithm { public static class Huffman { /// &lt;summary&gt; /// Шифровка &lt;paramref...

Помогите реализовать алгоритм (приоритетная очередь) - C#
Очень прошу помочь реализовать этот алгоритм в коде С# приоритетная очередь Open список Closed s.g = 0 // s -...

Как реализовать алгоритм шифрования md5 - C#
Здравствуйте, подскажите пожалуйста, как реализовать алгоритм md, который на языке php выглядит так: (md5('hello!', true) т.е. должна...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru