Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.57/44: Рейтинг темы: голосов - 44, средняя оценка - 4.57
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
167 / 167 / 30
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5

Конкурс(поиск простых чисел)

24.07.2012, 20:30. Показов 10545. Ответов 74
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я тут подумал, посмотрел по теме Hello world'a как всем нравится находить изощренные способы.Так вот - задание на засыпку: написать программу, вычисляющую простые числа от 1 до 300000.Программа ДОЛЖНА работать за 6 секунд.Обьем памяти неограничен.За 6 сек должна работать на процессоре примерно таком - 2 ядра по 3.2 ггц каждое!

Ну что, кто напишет?))) Кто напишет, тому спасибо поставлю)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.07.2012, 20:30
Ответы с готовыми решениями:

Поиск простых чисел
Всем привет, прохожу книгу Шилдта и остановился на программе: ---------------------------------------------------- #include...

Поиск простых чисел
помогите пожалуйста с заданием напишите программу которая при помощи двух вложенных циклов for и оператора вычисления остатка (%) находит...

Поиск простых чисел
Знаю, что тема избитая, но решил написать алгоритм поиска простых чисел. int j,i,k /*количество простых*/ ,nech,prime; ...

74
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
30.07.2012, 02:46
Студворк — интернет-сервис помощи студентам
Доработал. Работает за 1.326

http://zalil.ru/33624008

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

Не по теме:

ForEveR, ищи письмо в лс

0
 Аватар для xADMIRALx
70 / 64 / 5
Регистрация: 09.06.2012
Сообщений: 291
30.07.2012, 03:50
Ksan, Не соответствует заданию
написать программу, вычисляющую простые числа от 1 до 300000
0
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
30.07.2012, 05:51
xADMIRALx, я же уже написал
припишу что-нибудь вроде n+1-3+2
вот, пожалуйста: вычисление
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2012, 05:52
Цитата Сообщение от Ksan Посмотреть сообщение
Раз уж о времени компиляции не говорили. А лишь о времени выдачи. И вообще.
Вообщем, извратился.

Время на все про все заняло "2.558"

как таковая библиотека нужна только одна: stdio.h
остальные для вывода времени и что бы не вылетала консоль


Уж не поленитесь, скачайте. Форум печатать отказался.
http://zalil.ru/33623938

Добавлено через 1 минуту
И, между прочим, компилится довольно быстро. Даже очень.
13 секунд.
0
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
30.07.2012, 05:52
alsav22, компиляция или выполнение?
и на каких характеристиках компьютера?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2012, 06:30
Цитата Сообщение от Ksan Посмотреть сообщение
Доработал. Работает за 1.326

http://zalil.ru/33624008

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

Не по теме:

ForEveR, ищи письмо в лс

12 секунд.

Добавлено через 6 минут
Цитата Сообщение от Ksan Посмотреть сообщение
alsav22, компиляция или выполнение?
и на каких характеристиках компьютера?
Выполнение. Компиляция - секунды. Посмотрите в предыдущих постах за сколько другие варианты выполнялись (особенно у diagon), при тех же характеристиках компа. (два ядра 3,21ГГц, ОЗУ 4Гб). Перевод строки замедляет выполнение, больше чем, в 3 раза . Нужно через пробел выводить.
0
 Аватар для xADMIRALx
70 / 64 / 5
Регистрация: 09.06.2012
Сообщений: 291
30.07.2012, 07:56
alsav22, вить в задание не указано что нежен пробел или перевод строки
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2012, 09:10
Цитата Сообщение от xADMIRALx Посмотреть сообщение
alsav22, вить в задание не указано что нежен пробел или перевод строки
И что? Конкурс в чём? Сделать код как можно более бысрым и, разумеется, чтобы числа можно было прочесть. Я просто написал, что перевод строки замедляет вывод. И чтобы с другими выриантами можно было сравнивать.
0
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
30.07.2012, 23:45
Знатоки, просветите, пожалуйста, как находят, например, числа Мерсенна? Я имею в виду, чисто алгоритмически, как это делается? И почему это делают с помощью распределённых вычислений,- они находят, а потом проверяют его, что-ли?
0
31.07.2012, 02:47

Не по теме:

#pragma, юморишь?

1
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
31.07.2012, 02:52
Нет, я честно не знаю. Ну есть формула 2^n-1 - так и ищут, а потом проверяют, или есть более простые способы? Просто мне кажется странным факт из Википедии, что на данный момент известно лишь 47 чисел Мерсенна

Не по теме:

интересно ещё, как у них числа таких порядков хранятся, в которых по 10 млн цифр..

0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
31.07.2012, 03:10
#pragma, не https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{n} - 1 , а https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{p} - 1, р - простое число. Проверяется с помощью теста Люка — Лемера. Ничего странного тут нет, наибольшее известное число Мерсена https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{43,112,609} - 1 на минуточку...
1
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
31.07.2012, 03:15
alkagolik, Спасибо , я просто неправильно понял написанное )
То есть
3, 7, 31, 127, 2047, 8191, 131071, 524287, 8388607, 536870911, 2147483647, … (последовательность A001348 в OEIS)
в этой последовательности не обязательно все числа простые, а только некоторые?
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
31.07.2012, 03:40
#pragma, в ней все числа простые. Но, это простые числа Мерсена, полученные с помощью формулы выше и прошедшие тест на простоту.
0
63 / 58 / 14
Регистрация: 14.12.2011
Сообщений: 193
31.07.2012, 12:45
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
#include <iostream>
#include <math.h>
using namespace std;
 
#define N 300000
int main()
{
    int count = 1;
    int mass[26000] = {1,2};    // ~26000 simple numbers 1..300k 
    bool flag = false;
 
    for(int i = 3 ; i < N ; i += 2 )
    {
        flag = true;
 
        for(int j = 2 ; j < count ; j++)
        {
            if(!(i % mass[j]) )
            {
                flag = false;
                break;
            }
            else if(mass[j] >= sqrt(i))
            {
                break;
            }
 
        }
 
        if(flag)
        {
            cout << i << endl;
            mass[++count] = i;
        }
    }
    return 0;
}
Миниатюры
Конкурс(поиск простых чисел)  
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2012, 14:05
15 секунд.
0
63 / 58 / 14
Регистрация: 14.12.2011
Сообщений: 193
31.07.2012, 14:55
Это время исполнения 15 сек? на какой машине?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.07.2012, 16:03
Цитата Сообщение от Dr.Urban Посмотреть сообщение
Это время исполнения 15 сек? на какой машине?
Смотрите 46 пост.
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
31.07.2012, 16:45
alsav22, что-то ты людей путаешь постоянно.
время
Bash
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
indicator@pc-host:~$ cat test.cc
#include <iostream>
#include <math.h>
using namespace std;
 
#define N 300000
int main()
{
    int count = 1;
    int mass[26000] = {1,2};    // ~26000 simple numbers 1..300k 
    bool flag = false;
 
    for(int i = 3 ; i < N ; i += 2 )
    {
        flag = true;
 
        for(int j = 2 ; j < count ; j++)
        {
            if(!(i % mass[j]) )
            {
                flag = false;
                break;
            }
            else if(mass[j] >= sqrt(i))
            {
                break;
            }
 
        }
 
        if(flag)
        {
            cout << i << endl;
            mass[++count] = i;
        }
    }
    return 0;
}
indicator@pc-host:~$ g++ -s -O2 test.cc -o test
indicator@pc-host:~$ time ./test > file
 
real    0m0.166s
user    0m0.044s
sys 0m0.116s
indicator@pc-host:~$ time ./test
...
real    0m0.408s
user    0m0.052s
sys 0m0.096s
indicator@pc-host:~$ lscpu
Architecture:          i686
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    2
Socket(s):             1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 15
Stepping:              13
CPU MHz:               1200.000
BogoMIPS:              4400.22
L1d cache:             32K
L1i cache:             32K
L2 cache:              2048K
indicator@pc-host:~$
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
31.07.2012, 16:52
Цитата Сообщение от alkagolik Посмотреть сообщение
alsav22, что-то ты людей путаешь постоянно
Он же тестирует с выводом на консоль)
Банально посчитать простые числа до 300 000 тривиально, это делается за несколько миллисекунд, однако вывод на консоль занимает секунд 5.
Собственно, в моей программке почти незаметная пауза перед выводом - это вычисление всех простых чисел и забивание их в строку, дальше я просто вывожу эту строку с помощью fwrite(пробовал через writefile из winapi, но он почему-то отказывался выводить более-менее длинные строки).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2012, 16:52

Поиск простых чисел
Почему мне возвращает просто непарные числа? в чем загвоздка #include &lt;iostream&gt; bool prost(int); using namespace std; int...

Поиск простых чисел
to idetify if the given K is prime or not. Prime number is the number that can be divided by 1 and by itself ONLY. If given number is...

Поиск простых чисел
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;locale.h&gt; using namespace std; int y; bool m; bool nom( int...

Поиск простых чисел
необходимо найти все простые числа от 1 до 100. Вот я написал код: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstdlib&gt;...

Поиск простых чисел
Народ, в программе нужно из введённых чисел найти и вывести простые числа(т.е. 2,3,5,7,11,13... и т.д.). Алгоритм поиска у меня не дописан,...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru