Форум программистов, компьютерный форум CyberForum.ru

Вычислить все простые числа до n - C++

Восстановить пароль Регистрация
 
 
Жасулан
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
10.02.2014, 07:31     Вычислить все простые числа до n #1
Всем привет! при программировании у меня возникла необходимость вычислить все простые числа до n,в сетях я нашел код :
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
# include <iostream>
 using namespace std;
 bool a[100000000];
 
int main()
{ 
    a[0]=true;
    a[1]=true; 
    for(long long i=2; i<=100000000; ++i)
    {
            if(a[i]==false)
            {
                           if(i*i<=100000000)
                           {
                                          for(long long j=i*i; j<=100000000; j+=i)
                                          {
                                                   a[j]=true;
                                          }
                           }
            }
    } 
    for(long long i=1; i<=100000000; ++i)
    {
            if(a[i]==false)
            cout <<i<<" ";
    }
    system("pause");
}
как ее нужно переделать на виндоус форм скнопкой вычисления

как ее переделать так, чтобы n вводилось вручную,и если получится все это сдлать на форме, т.е с простым интерфейсом? жду предложении и наставлении программистов)))
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2014, 07:31     Вычислить все простые числа до n
Посмотрите здесь:

C++ Вывести все простые числа до n
C++ найти все простые числа до n
C++ Даны целые числа р и q. Получить все делители числа q, взаимно простые с р
C++ Даны натуральные числа a,b(a<= Ь). Получить все простые числа р, удовлетворяющие неравенствам a<= р<= b.
не могу понять задачку :) Даны натуральные числа p и q. Получить все делители числа q, взаимно простые с p C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
10.02.2014, 20:07     Вычислить все простые числа до n #2
Цитата Сообщение от Жасулан Посмотреть сообщение
как ее переделать так, чтобы n вводилось вручную,и если получится все это сдлать на форме, т.е с простым интерфейсом? жду предложении и наставлении программистов)))
А вы знаете как вообще формы создаются с элементами? (Cli, MFC и WinApi)? Отсюда и код будет разный...
Жасулан
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
11.02.2014, 07:48  [ТС]     Вычислить все простые числа до n #3
mustimur, да я создаль форму на CLI и у меня там уже есть одна процедура,сам алгоритм диффи- хеллмана,и хотелось бы в это окно дбавить типа генератор простых чисел
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
11.02.2014, 09:11     Вычислить все простые числа до n #4
А вы пробовали оптимизировать вашу программу, убрав заведомо непростые числа, речь идет о четных числах.
Жасулан
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
11.02.2014, 09:16  [ТС]     Вычислить все простые числа до n #5
ShadowFirst, нет этот вариант исключен, потому что в больших простых числах может встретиться четное простое число

Добавлено через 48 секунд
хотя 2-2000 только 2 четное))
druidich
 Аватар для druidich
30 / 30 / 4
Регистрация: 21.05.2012
Сообщений: 428
11.02.2014, 09:28     Вычислить все простые числа до n #6
Жасулан,
Цитата Сообщение от Жасулан Посмотреть сообщение
нет этот вариант исключен, потому что в больших простых числах может встретиться четное простое число
как так? если оно четное то оно уже не простое ! ну или приведите пример
разумней делать проверку на четность, т.е. не просто делить число на 2, а взять последнюю цифру числа и поделить ее на 2. Затем проверить на деление на 3 (сумма цифр числа делиться на 3 => не простое).
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
11.02.2014, 09:39     Вычислить все простые числа до n #7
Вот именно два четное, но никто не говорит что нельзя пропускать дальше. Начинать например сразу с нечетных чисел, в частности с 3, с шагом два. Вот примерная реализация:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# include <iostream>
 using namespace std;
 bool a[100000000];
 
int main()
{ 
    a[0]=a[1]=a[2]=true;
    for (long i=3; i<100000000; i+=2) a[i+1]=!a[i]=true;
    for(long i=3; i<100000000; i+=2)
    {
            if(a[i]==true)
            {
               for (long j=i*2; j<100000000;j+=i*2)  a[i]=false;
            }
    } 
    for(long i=2; i<100000000; ++i)
    {
            if(a[i]==false)
            cout <<i<<" ";
    }
    system("pause");
}
Вроде посимпатичнее будет и минус один цикл. И кстати единица не является простым числом, простые числа идут с двойки. И еще на с++ нумерация массива идет с нуля по этому в окончании цикла должно быть строгое неравенство.
Жасулан
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
11.02.2014, 09:58  [ТС]     Вычислить все простые числа до n #8
for (long i=3; i<100000000; i+=2) a[i+1]=!a[i]=true; выдает ошибку error C2106: =: левый операнд должен быть левосторонним значением??? и как его записать на процедуру кнопки в форме? заранее спасибо
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
11.02.2014, 10:04     Вычислить все простые числа до n #9
Цитата Сообщение от Жасулан Посмотреть сообщение
for (long i=3; i<100000000; i+=2) a[i+1]=!a[i]=true; выдает ошибку error C2106: =: левый операнд должен быть левосторонним значением??? и как его записать на процедуру кнопки в форме? заранее спасибо
Странно думал такая форма записи сойдет))) вот развернутый вариант:

C++
1
for (long i=3; i<100000000; i+=2) {a[i+1]=false; a[i]=true;}
А насчет формы то если вы делаете например в VisualStudio то просто открываете форму, тащите на форму кнопку и элемент вывода(Честно не помню какие там, так как использую Qt Designer) На кнопку нажимаете дважды и вас должно перевести в редактор кода где создастся автоматически заглушка функции. Туда вставляете этот код, единственное в коде нужно исправить, сделать не вывод в консоль а на элемент вывода, тут уже Tutorial вам в помощь.
Жасулан
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
11.02.2014, 10:12  [ТС]     Вычислить все простые числа до n #10
спасибо за помощь но данная программа не вычисляеть только простые числа, а мне нужны только и только простые числа от 2 до n, моя программа верна но у меня не хватает знании в программировании чтобы переделать его
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
11.02.2014, 10:14     Вычислить все простые числа до n #11
Простые числа
Жасулан
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
11.02.2014, 10:19  [ТС]     Вычислить все простые числа до n #12
SatanaXIII, там нет полезной для меня информации
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
11.02.2014, 10:35     Вычислить все простые числа до n #13
Понятное дело не вычисляет, тут сыграла шутку моя невнимательность)) что прошу прощения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# include <iostream>
 using namespace std;
 bool a[100000000];
 
int main()
{ 
    a[0]=a[1]=a[2]=true;
    for (long i=3; i<100000000; i+=2) {a[i+1]=false; a[i]=true;}
    for(long i=3; i<100000000; i+=2)
    {
            if(a[i]==true)
            {
               for (long j=i*2; j<100000000;j+=i*2)  a[j]=false;
            }
    } 
    for(long i=2; i<100000000; ++i)
    {
            if(a[i]==true)
            cout <<i<<" ";
    }
    system("pause");
}
Жасулан
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
11.02.2014, 10:42  [ТС]     Вычислить все простые числа до n #14
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
# include <iostream>
 using namespace std;
 bool a[100000000];
 
int main()
{ 
    a[0]=true;
    a[1]=true; 
    for(long long i=2; i<=100000000; ++i)
    {
            if(a[i]==false)
            {
                           if(i*i<=100000000)
                           {
                                          for(long long j=i*i; j<=100000000; j+=i)
                                          {
                                                   a[j]=true;
                                          }
                           }
            }
    } 
    for(long long i=1; i<=100000000; ++i)
    {
            if(a[i]==false)
            cout <<i<<" ";
    }
    system("pause");
все таки эта программка правильно работает,помогите ее переделать так чтобы наше заветное чисбо вводилось вручную)))

Добавлено через 1 минуту
ShadowFirst, спасибо вам за отзывчевость, ведь именно снеравнодушными людьми мир прекраснее))))
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
11.02.2014, 10:47     Вычислить все простые числа до n #15
Эх что тут можно сказать вот проверенная версия

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# include <iostream>
 using namespace std;
bool a[100000000];
 
int main()
{
     
    a[0]=a[1]=a[2]=true;
    for (long i=3; i<100000000; i+=2) {a[i+1]=false; a[i]=true;}
    for(long i=3; i<100000000; i+=2)
    {
            if(a[i]==true)
            {
               for (long j=i*i; j<100000000;j+=i*2)
                   a[j]=false;
            }
    }
    for(long i=2; i<100000000; ++i)
    {
            if(a[i]==true)
            cout <<i<<"\n";
    }
}
Жасулан
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
11.02.2014, 10:50  [ТС]     Вычислить все простые числа до n #16
кажется вы меня не совсем так поняли
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
11.02.2014, 10:54     Вычислить все простые числа до n #17
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я вас понял, но не хочется же выглядеть дураком, если пытаешься помочь, то помогай, а я получается вам пичкал действительно не рабочий код, и мое самолюбие при этом пострадало, вот и решил довести дело до конца представить то что работает, единственно может с типом ошибся так как там идет умножение i*i и нужно вернуть long long.
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
11.02.2014, 11:51     Вычислить все простые числа до n #18
Цитата Сообщение от Жасулан Посмотреть сообщение
кажется вы меня не совсем так поняли
Ну взять код из main и засунуть в процедуру нажатия кнопки, например код ShadowFirst, ...
только заменить
Цитата Сообщение от ShadowFirst Посмотреть сообщение
C++
1
cout <<i<<"\n";
например на вывод в textbox1:
C++
1
textbox1->Text+=i.ToString()+"; ";
Жасулан
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
11.02.2014, 12:14  [ТС]     Вычислить все простые числа до n #19
мне это не совсем понятно

Добавлено через 12 секунд


Добавлено через 37 секунд
может я вышлю проект и исхоник
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2014, 13:29     Вычислить все простые числа до n
Еще ссылки по теме:

C++ Одномерный массив. Вывести на экран все числа, индексы которых есть простые числа.
C++ Дано натуральное число. Вывести на экран все простые числа до заданного числа.
C++ Вывести все простые числа до заданного числа

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

Или воспользуйтесь поиском по форуму:
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
11.02.2014, 13:29     Вычислить все простые числа до n #20
Цитата Сообщение от Жасулан Посмотреть сообщение
может я вышлю проект и исхоник
Давай, исправление выложу здесь, либо файл, либо кодом...
Yandex
Объявления
11.02.2014, 13:29     Вычислить все простые числа до n
Ответ Создать тему
Опции темы

Текущее время: 09:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru