В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География

нужно!
(задания типа огэ)


нужно! (задания типа огэ)
нужно! (задания типа огэ)
нужно! (задания типа огэ)
нужно! (задания типа огэ)
нужно! (задания типа огэ)

Показать ответ
Ответ:
Даниил986
Даниил986
09.01.2023 22:40
Код

uses
  System, System.Net, System.Threading.Tasks, System.Collections.Generic;

type
    ListSimple = class
        l := new List<int64>();
        procedure AddSimple(N: int64);
        begin
            var Result := True;
           
            var num := n;
            while num > 0 do begin
                if not (num mod 10 in [2,3,5,7]) then
                begin
                    Result := False;
                    break;
                end;
                num := num div 10;
            end;
            if not Result then exit;
           
            for var i: int64 := 2 to round(sqrt(N)) do
                if N mod i = 0 then
                begin
                    Result := False;
                    break;
                end;
            // lock не позволяет нескольким потокам одновременно выполнять эту секцию.
            // Это обязательно, иначе если несколько потоков одновременно будут пытаться добавить значение в список, список может оказаться испорченным
            // Секция, охраняемая lock, называется критической
            lock l do
                if Result then
                    l.Add(N);
        end;
    end;

var
    hh := 100000;

begin
    var ls := new ListSimple;
    var ii: int64 := 2;
   
    Parallel.For(ii, ii + hh, ls.AddSimple);
    writeln(ls.l.Count);
    ls.l := ls.l.OrderBy(x->x).ToList(); //- это можно включить для проверки того, что в обоих списках - одинаковые простые числа
    for var i := 0 to ls.l.Count - 1 do
        writeln(i+1,' - ',ls.l[i]);
   
    writeln; 
    writeln('Время выполнения = ', Milliseconds); 
end.

Список суперпростых

1 - 2
2 - 3
3 - 5
4 - 7
5 - 23
6 - 37
7 - 53
8 - 73
9 - 223
10 - 227
11 - 233
12 - 257
13 - 277
14 - 337
15 - 353
16 - 373
17 - 523
18 - 557
19 - 577
20 - 727
21 - 733
22 - 757
23 - 773
24 - 2237
25 - 2273
26 - 2333
27 - 2357
28 - 2377
29 - 2557
30 - 2753
31 - 2777
32 - 3253
33 - 3257
34 - 3323
35 - 3373
36 - 3527
37 - 3533
38 - 3557
39 - 3727
40 - 3733
41 - 5227
42 - 5233
43 - 5237
44 - 5273
45 - 5323
46 - 5333
47 - 5527
48 - 5557
49 - 5573
50 - 5737
51 - 7237
52 - 7253
53 - 7333
54 - 7523
55 - 7537
56 - 7573
57 - 7577
58 - 7723
59 - 7727
60 - 7753
61 - 7757
62 - 22273
63 - 22277
64 - 22573
65 - 22727
66 - 22777
67 - 23227
68 - 23327
69 - 23333
70 - 23357
71 - 23537
72 - 23557
73 - 23753
74 - 23773
75 - 25237
76 - 25253
77 - 25357
78 - 25373
79 - 25523
80 - 25537
81 - 25577
82 - 25733
83 - 27253
84 - 27277
85 - 27337
86 - 27527
87 - 27733
88 - 27737
89 - 27773
90 - 32233
91 - 32237
92 - 32257
93 - 32323
94 - 32327

95 - 32353
96 - 32377
97 - 32533
98 - 32537
99 - 32573
100 - 33223
101 - 33353
102 - 33377
103 - 33533
104 - 33577
105 - 33757
106 - 33773
107 - 35227
108 - 35257
109 - 35323
110 - 35327
111 - 35353
112 - 35527
113 - 35533
114 - 35537
115 - 35573
116 - 35753
117 - 37223
118 - 37253
119 - 37273
120 - 37277
121 - 37337
122 - 37357
123 - 37537
124 - 37573
125 - 52223
126 - 52237
127 - 52253
128 - 52553
129 - 52727
130 - 52733
131 - 52757
132 - 53233
133 - 53323
134 - 53327
135 - 53353
136 - 53377
137 - 53527
138 - 53773
139 - 53777
140 - 55333
141 - 55337
142 - 55373
143 - 55733
144 - 57223
145 - 57373
146 - 57527
147 - 57557
148 - 57727
149 - 57737
150 - 57773
151 - 72223
152 - 72227
153 - 72253
154 - 72277
155 - 72337
156 - 72353
157 - 72533
158 - 72577
159 - 72727
160 - 72733
161 - 73237
162 - 73277
163 - 73327
164 - 73523
165 - 73553
166 - 73727
167 - 73757
168 - 75223
169 - 75227
170 - 75253
171 - 75277
172 - 75323
173 - 75337
174 - 75353
175 - 75377
176 - 75527
177 - 75533
178 - 75553
179 - 75557
180 - 75577
181 - 75773
182 - 77237
183 - 77323
184 - 77377
185 - 77527
186 - 77557
187 - 77573
188 - 77723
189 - 77773
0,0(0 оценок)
Ответ:
gerczunt
gerczunt
01.08.2020 17:18
Я бы сделал так:
Загоняем все 5 чисел в массив. Делаем сортировку. В итоге получаем, что в массиве в интервале massiv[0]..massiv[3] будут лежать минимальные числа. Берем их, суммируем, получаем минимально возможную сумму.
Аналогично и с максимальной, только суммировать будем с massiv[1]..massiv[4].

Код будет примерно такой:
int max_possible_sum(char *massiv[5]){
     for (int i = 1; i <5; ++i) {
           int sum += massiv[i];
     }
return sum;
}

Аналогично и для самой малой суммы: 
int min_possible_sum(char *massiv[5]){
     for (int i = 0; i <4; ++i) {
           int sum += massiv[i];
     }
return sum;
}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота