Алгоритм построения простых чисел | Статья в журнале «Юный ученый»

Отправьте статью сегодня! Журнал выйдет 11 мая, печатный экземпляр отправим 15 мая.

Опубликовать статью в журнале

Автор:

Научный руководитель:

Отличный выбор методов исследования Высокая научная новизна

Рубрика: Математика: алгебра и начала анализа, геометрия

Опубликовано в Юный учёный №7 (59) июль 2022 г.

Дата публикации: 16.06.2022

Статья просмотрена: 294 раза

Библиографическое описание:

Травников, А. Р. Алгоритм построения простых чисел / А. Р. Травников, Л. В. Князева. — Текст : непосредственный // Юный ученый. — 2022. — № 7 (59). — С. 85-98. — URL: https://moluch.ru/young/archive/59/3146/ (дата обращения: 27.04.2024).



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

Ключевые слова: простые числа, численные методы, алгоритм.

This article is devoted to the derivation of formulas and the development of an algorithm for the search of primes in a given numerical interval. This algorithm is also useful for checking whether a given number is prime or not.

Keywords: primes, numerical methods, algorithm.

Формула простого числа

Натуральное число X в десятичном представлении может оканчиваться на цифры: 1, 3, 7, 9. Очевидно, что число X является простым, если выполняются следующие условия:

X = 10n + 1(1)

или X = 10n + 3(2)

или X = 10n + 7(3)

или X = 10n + 9(4)

Выбор m и k для описания простого числа

1) Рассмотрим построение простого числа из формулы (1)

1.1. Из формулы (1.1) выразим:

и построим матрицу чисел n, зависящих от m и k. Обозначим ее через T1.1.

1.2. Из формулы (1.2) выразим:

и построим матрицу чисел n, зависящих от m и k. Обозначим ее через T1.2.

1.3. Из формулы (1.3) выразим:

и построим матрицу чисел n, зависящих от m и k. Обозначим ее через T1.3.

Итак, число X = 10n + 1 является простым, если n не равно ни одному из чисел матриц T1.1, T1.2, T1.3, за исключением чисел строки k = 0 матрицы T1.1.

В этой строке все числа имеют вид n = ((10m + 1) — 1) / 10, или n = m, т. е. получается, что в этой строке число X = 10n + 1 равно произведению двух сомножителей — единицы и самого себя, что допустимо для простого числа. Все остальные элементы матрицы T1.1 имеют не менее двух делителей, а это означает, что число (1) будет составным.

2) Рассмотрим построение простого числа из формулы (2)

2.1. Из формулы (2.1) выразим:

и построим матрицу чисел n, зависящих от m и k. Обозначим ее через T2.1.

2.2. Из формулы (2.2) выразим:

и построим матрицу чисел n, зависящих от m и k. Обозначим ее через T2.2.

Итак, число X = 10n + 3 является простым, если n не равно ни одному из чисел матриц T2.1, T2.2, за исключением строки k = 0 матрицы T.2.1.

3) Рассмотрим построение простого числа из формулы (3)

3.1. Из формулы (3.1) выразим:

и построим матрицу чисел n, зависящих от m и k. Обозначим ее через T3.1.

3.2. Из формулы (3.2) выразим:

и построим матрицу чисел n, зависящих от m и k. Обозначим ее через T3.2.

Итак, число X = 10n + 7 является простым, если n не равно ни одному из чисел матриц T3.1, T3.2, за исключением строки k = 0 матрицы T.3.1.

4) Рассмотрим построение простого числа из формулы (4)

4.1. Из формулы (4.1) выразим:

и построим матрицу чисел n, зависящих от m и k. Обозначим ее через T4.1.

4.2. Из формулы (4.2) выразим:

и построим матрицу чисел n, зависящих от m и k. Обозначим ее через T4.2.

4.3. Из формулы (4.3) выразим:

и построим матрицу чисел n, зависящих от m и k. Обозначим ее через T4.3.

Итак, число X = 10n + 9 является простым, если n не равно ни одному из чисел матриц T4.1, T4.2, T4.3, за исключением строки k = 0 матрицы T4.1.

Фрагменты матриц приведены в Приложении. Эти матрицы назовем по имени их разработчика «таблицами Травникова».

Методика нахождения простого числа в заданном интервале

В данном разделе рассмотрим получение простого числа, а также всех простых чисел в заданном интервале.

Мы будем рассматривать поиск простого числа, большего 20. Поиск простого числа, меньшего 20, тривиален и может быть произведен вручную.

Проверка того, является ли данное число простым, это отдельная задача, которую мы рассмотрим в разделе «Проверка числа на простоту».

1. Обозначим интервал поиска простого числа через:

interval_beg — начальное число интервала, interval_end — конечное число интервала, причем, interval_beg и interval_end — натуральные числа и interval_beg ≤ interval_end.

2. Для поиска простого числа необходимо определить число n, которое не будет содержаться ни в одной таблице Травникова. То есть:

— Число n из формулы (1) не должно содержаться в таблицах T1.1, T1.2 и T1.3. Если такое число n будет найдено, то алгоритм возвращает простое число X = 10n + 1 и заканчивает работу.

— Число n из формулы (2) не должно содержаться в таблицах T2.1 и T2.2. Если такое число n будет найдено, то алгоритм возвращает простое число X = 10n + 3 и заканчивает работу.

— Число n из формулы (3) не должно содержаться в таблицах T3.1 и T3.2. Если такое число n будет найдено, то алгоритм возвращает простое число X = 10n + 7 и заканчивает работу.

— Число n из формулы (4) не должно содержаться в таблицах T4.1, T4.2 и T4.3. Если такое число n будет найдено, то алгоритм возвращает простое число X = 10n + 9 и заканчивает работу.

3. Поиск в соответствующей таблице будем производить только среди тех чисел n, которые удовлетворяют условию:

n_beg ≤ n ≤ n_end, где n_beg = interval_beg / 10, а n_end = interval_end / 10.

4. На начальном шаге n = n_beg. Будем искать поочередно числа вида (1), (2), (3), (4). Если число n будет совпадать с одним из чисел из соответствующих таблиц Травникова, а это означает, что число X составное, то увеличим число n = n + 1 и далее опять произведем поиск и т. д. и так до тех пор, пока n не станет равным n_end.

5. Если не будет найдено ни одно число n, которое не будет содержаться в соответствующей таблице Травникова, то это будет означать, что в данном интервале простых чисел не существует. В этом случае надо расширить интервал поиска и повторить поиск.

6. Для поиска среди элементов таблиц Травникова необходимо найти номера строк, а в каждой строке номера столбцов, среди которых будет происходить поиск. Номер строки k должен удовлетворять условию: k_beg ≤ k ≤ k_end, номер столбца m должен удовлетворять условию: m_beg ≤ m ≤ m_end, где k_beg и m_beg соответствуют n_beg, а k_end и m_end соответствуют n_end.

Алгоритм нахождения номеров строк и столбцов

Алгоритм поиска простого числа вида X = 10n + 1 рассмотрим более подробно. В остальных случаях рассуждения аналогичны и мы просто приведем формулы.

Округление вниз и вверх производится для того чтобы не сузить диапазон поиска.

Таблица T1.1

— k_beg = 1. Строка с k = 0 исключается из поиска.

— Так как таблица T1.1. является симметричной относительно главной диагонали, будем производить поиск только в правой ее части, т. е. когда m ≥ k.

На диагонали выполняется условие: n_diag = (X-1) / 10 = 10k 2 + 2k. Мы ищем номер строки, для которой будет выполняться условие:

n_end ≤ n_diag. Для этого решим квадратное уравнение:

10k 2 + 2k — n_end = 0. Отсюда находим:

(1.1.1)

— Далее в каждой из строк таблицы T1.1 будем искать номера столбцов, удовлетворяющих условию: m_beg ≤ m ≤ m_end, и только среди этих столбцов будет происходить поиск.

Подставим n_beg в формулу X = 10n + 1 = (10k + 1)(10m + 1) и выразим m_beg в зависимости от k.

(1.1.2)

Затем ищем максимум для того, чтобы работать только в правой части таблицы, т. е. m_beg = Max{m_beg, k}.

— Подставим n_end в формулу X = 10n + 1 = (10k + 1)(10m + 1) и выразим m_end в зависимости от k.

(1.1.3)

Таблица T 1.2

— k_beg = 0.

— из формулы (1.2) получим:

(1.2.1)

Для каждого k_beg ≤ k ≤ k_end в каждой строке таблицы T1.2 справедливы следующие формулы:

(1.2.2)

(1.2.3)

Таблица T1.3

— k_beg = 0.

— Так как таблица T1.3. является симметричной относительно главной диагонали, будем производить поиск только в правой ее части, то есть когда m ≥ k.

На диагонали выполняется условие:

n_diag = (X-1) / 10 = 10k 2 + 18k + 8. Мы ищем номер строки, для которой будет выполняться условие: n_end ≤ n_diag. Для этого решим квадратное уравнение: 10k 2 + 18k + 8 — n_end = 0. Отсюда находим:

(1.3.1)

Для каждого k_beg ≤ k ≤ k_end в каждой строке таблицы T1.3 справедливы следующие формулы:

(1.3.2)

m_beg = Max{m_beg, k}

(1.3.3)

Таблица T 2.1

— k_beg = 1. Строка с k = 0 исключается из поиска.

— из формулы (2.1) получим:

(2.1.1)

Для каждого k_beg ≤ k ≤ k_end в каждой строке таблицы T2.1 справедливы следующие формулы:

(2.1.2)

(2.1.3)

Таблица T2.2

— k_beg = 0.

— из формулы (2.2) получим:

(2.2.1)

Для каждого k_beg ≤ k ≤ k_end в каждой строке таблицы T2.2 справедливы следующие формулы:

(2.2.2)

(2.2.3)

Таблица T3.1

— k_beg = 1. Строка с k = 0 исключается из поиска.

— из формулы (3.1) получим:

(3.1.1)

Для каждого k_beg ≤ k ≤ k_end в каждой строке таблицы T3.1 справедливы следующие формулы:

(3.1.2)

(3.1.3)

Таблица T 3.2

— k_beg = 0.

— из формулы (3.2) получим:

(3.2.1)

Для каждого k_beg ≤ k ≤ k_end в каждой строке таблицы T3.2 справедливы следующие формулы:

(3.2.2)

(3.2.3)

Таблица T4.1

— k_beg = 1. Строка с k = 0 исключается из поиска.

— из формулы (4.1) получим:

(4.1.1)

Для каждого k_beg ≤ k ≤ k_end в каждой строке таблицы T4.1 справедливы следующие формулы:

(4.1.2)

(4.1.3)

Таблица T4.2

— k_beg = 0.

— из формулы (4.2) получим:

(4.2.1)

Для каждого k_beg ≤ k ≤ k_end в каждой строке таблицы T4.2 справедливы следующие формулы:

(4.2.2)

m_beg = Max{m_beg, k}.

(4.2.3)

Таблица T 4.3

— k_beg = 0.

— из формулы (4.3) получим:

(4.3.1)

Для каждого k_beg ≤ k ≤ k_end в каждой строке таблицы T4.3 справедливы следующие формулы:

(4.3.2)

m_beg = Max{m_beg, k}.

(4.3.3)

Пример поиска первого простого числа в интервале

Покажем, как найти первое простое число вида (1) в интервале от 120 до 150. Поиск необходимо проводить не во всех клетках таблиц, а только в затененных.

— Положим n = 12. Это число содержится в таблице T1.1, следовательно, это число составное.

n = n + 1, т. е. n = 13. Число n не содержится ни в одной из затененных клеток таблиц T1.1 — T1.3, следовательно, число X = 10 . n + 1 = 10 . 13 + 1 = 131 является простым.

— Алгоритм заканчивает свою работу. В Приложении приведены фрагменты таблиц T1.1 — T1.3 с затененными клетками.

Методика нахождения всех простых чисел в заданном интервале

— Положим n = n_beg. Будем искать поочередно числа вида (1), (2), (3), (4).

— Применяем алгоритм нахождения простого числа. Если не будет найдено ни одного простого числа, алгоритм заканчивает свою работу.

— Если простое число будет найдено, увеличим число n = n + 1 и т. д. до тех пор, пока n не станет равным n_end.

Проверка числа на простоту

Рассмотрим алгоритм проверки числа на простоту. Применим тот же алгоритм, что и для поиска простых чисел в заданном интервале. Положим X = interval_beg = interval_end, где X — число, требующее проверки на простоту. В таблице, приведенной ниже, собраны данные проверки различных чисел на простоту.

Таблица 1

Проверка чисел на простоту

Число — простое или нет

Количество операций (метод Князевой-Травникова)

Количество операций (классический метод)

101 — да

27

99

143 — нет

10

10

1 001 — нет

6

6

1 303 — да

135

1301

1 779 — нет

2

2

10 007 — да

527

10 005

110 143 — нет

10

10

7791331 — нет

16 642

46

10 111 111 — нет

48

28

10 951 373 — да

973 475

10 951 371

37 245 489 — нет

2

2

37 245 473 — да

3 310 727

37 245 471

100 140 049 — нет

2 229 357

10 006

109 479 871 — да

3 132 200

109 479 869

267 323 443 — нет

17 821 607

126

267 323 461 — да

7 644 373

267 323 459

1 111 111 117 — нет

9056

22

1 131 141 157 — да

57 454 809

1 131 141 155

51 545 202 857 — да

2 618 169 053

51 545 202 855

372 715 448 311 — нет

7 571 214

10 006

Проанализировав данные таблицы, мы можем сделать следующие выводы:

  1. Если число является составным, то количество операций классическим методом в среднем равно 9.9 % от количества операций методом Князевой-Травникова.
  2. Если число является простым, то количество операций методом Князевой-Травникова составляет в среднем 8,5 % от количества операций классическим методом.
  3. Выбор метода для проверки числа на простоту остается за пользователем.

Приложение.

Таблицы Травникова

Таблица 2

Фрагмент таблицы T1.1,

m

k

0

1

2

3

4

5

6

7

8

9

...

0

0

1

2

3

4

5

6

7

8

9

...

1

12

23

34

45

56

67

78

89

100

...

2

44

65

86

107

128

149

170

191

...

3

96

127

158

189

220

251

282

...

4

168

209

250

291

332

373

...

5

260

311

362

413

464

...

6

372

433

494

555

...

7

504

575

646

...

8

656

737

...

9

828

...

...

...

...

...

...

...

...

...

...

...

...

...

Таблица является симметричной.

Таблица 3

Фрагмент таблицы T1.2,

m


k

0

1

2

3

4

5

6

7

8

9

...

0

2

5

8

11

14

17

20

23

26

29

...

1

9

22

35

48

61

74

87

100

113

126

...

2

16

39

62

85

108

131

154

177

200

223

...

3

23

56

89

122

155

188

221

254

287

320

...

4

30

73

116

159

202

245

288

331

374

417

...

5

37

90

143

196

249

302

355

408

461

514

...

6

44

107

170

233

296

359

422

485

548

611

...

7

51

124

197

270

343

416

489

562

635

708

...

8

58

141

224

307

390

473

556

639

722

805

...

9

65

158

251

344

437

530

623

716

809

902

...

...

...

...

...

...

...

...

...

...

...

...

...

Таблица 4

Фрагмент таблицы T1.3,

m


k

0

1

2

3

4

5

6

7

8

9

...

0

8

17

26

35

44

53

62

71

80

89

...

1

36

55

74

93

112

131

150

169

188

...

2

84

113

142

171

200

229

258

287

...

3

152

191

230

269

308

347

386

...

4

240

289

338

387

436

485

...

5

348

407

466

525

584

...

6

476

545

614

683

...

7

624

703

782

...

8

792

881

...

9

980

...

...

...

...

...

...

...

...

...

...

...

...

...

Таблица является симметричной.

Таблица 5

Фрагмент таблицы T2.1,

m


k

0

1

2

3

4

5

6

7

8

9

...

0

0

1

2

3

4

5

6

7

8

9

...

1

3

14

25

36

47

58

69

80

91

102

...

2

6

27

48

69

90

111

132

153

174

195

...

3

9

40

71

102

133

164

195

226

257

288

...

4

12

53

94

135

176

217

258

299

340

381

...

5

15

66

117

168

219

270

321

372

423

474

...

6

18

79

140

201

262

323

384

445

506

567

...

7

21

92

163

234

305

376

447

518

589

660

...

8

24

105

186

267

348

429

510

591

672

753

...

9

27

118

209

300

391

482

573

664

755

846

...

...

...

...

...

...

...

...

...

...

...

...

...

Таблица 6

Фрагмент таблицы T2.2,

m


k

0

1

2

3

4

5

6

7

8

9

...

0

6

13

20

27

34

41

48

55

62

69

...

1

15

32

49

66

83

100

117

134

151

168

...

2

24

51

78

105

132

159

186

213

240

267

...

3

33

70

107

144

181

218

255

292

329

366

...

4

42

89

136

183

230

277

324

371

418

465

...

5

51

108

165

222

279

336

393

450

507

564

...

6

60

127

194

261

328

395

462

529

596

663

...

7

69

146

223

300

377

454

531

608

685

762

...

8

78

165

252

339

426

513

600

687

774

861

...

9

87

184

281

378

475

572

669

766

863

960

...

...

...

...

...

...

...

...

...

...

...

...

...

Таблица 7

Фрагмент таблицы T3.1,

m


k

0

1

2

3

4

5

6

7

8

9

...

0

0

1

2

3

4

5

6

7

8

9

...

1

7

18

29

40

51

62

73

84

95

108

...

2

14

35

56

77

98

119

140

161

182

203

...

3

21

52

83

114

145

176

207

238

269

300

...

4

28

69

110

151

192

233

274

315

356

397

...

5

35

86

137

188

239

290

341

392

443

494

...

6

42

103

164

225

286

347

408

469

530

591

...

7

49

120

191

262

333

404

475

546

617

688

...

8

56

137

218

299

380

461

542

623

704

785

...

9

63

154

245

336

427

518

609

700

791

882

...

...

...

...

...

...

...

...

...

...

...

...

...

Таблица 8

Фрагмент таблицы T3.2,

m


k

0

1

2

3

4

5

6

7

8

9

...

0

2

5

8

11

14

17

20

23

26

29

...

1

11

24

37

50

63

76

89

102

115

128

...

2

20

43

66

89

112

135

158

181

204

227

...

3

29

62

95

128

161

194

227

260

293

326

...

4

38

81

124

167

210

253

296

339

382

425

...

5

47

100

153

206

259

312

365

418

471

524

...

6

56

119

182

245

308

371

434

497

560

623

...

7

65

138

211

284

357

430

503

576

649

722

...

8

74

157

240

323

406

486

572

655

738

821

...

9

83

176

269

362

455

548

641

734

827

920

...

...

...

...

...

...

...

...

...

...

...

...

...

Таблица 9

Фрагмент таблицы T4.1,

m


k

0

1

2

3

4

5

6

7

8

9

...

0

0

1

2

3

4

5

6

7

8

9

...

1

9

20

31

42

53

64

75

86

97

108

...

2

18

39

60

81

102

123

144

165

186

207

...

3

27

58

89

120

151

182

213

244

275

306

...

4

36

77

118

159

200

241

282

323

364

405

...

5

45

96

147

198

249

300

351

402

453

504

...

6

54

115

176

237

298

359

420

481

542

603

...

7

63

134

205

276

347

418

489

560

631

702

...

8

72

153

234

315

396

477

558

639

720

801

...

9

81

172

263

354

445

536

627

718

809

900

...

...

...

...

...

...

...

...

...

...

...

...

...

Таблица 10

Фрагмент таблицы T4.2,

m


k

0

1

2

3

4

5

6

7

8

9

...

0

0

3

6

9

12

15

18

21

24

27

...

1

16

29

42

55

68

81

94

107

120

...

2

52

75

98

121

144

167

190

213

...

3

108

141

174

207

240

273

306

...

4

184

227

270

313

356

399

...

5

280

333

386

439

492

...

6

396

459

522

585

...

7

532

605

678

...

8

688

771

...

9

864

...

...

...

...

...

...

...

...

...

...

...

...

...

Таблица является симметричной.

Таблица 11

Фрагмент матрицы T4.3,

m


k

0

1

2

3

4

5

6

7

8

9

...

0

4

11

18

25

32

39

46

53

60

67

...

1

28

45

62

79

96

113

130

147

164

...

2

72

99

126

153

180

207

234

261

...

3

136

173

210

247

284

321

358

...

4

220

267

314

361

408

455

...

5

324

381

438

495

552

...

6

448

515

582

649

...

7

592

669

746

...

8

756

843

...

9

940

...

...

...

...

...

...

...

...

...

...

...

...

...

Таблица является симметричной.

Таблица 12

Фрагмент таблицы T1.1 с затененными клетками

m


k

0

1

2

3

4

5

6

7

8

9

...

0

0

1

2

3

4

5

6

7

8

9

...

1

12

23

34

45

56

67

78

89

100

...

2

44

65

86

107

128

149

170

191

...

3

96

127

158

189

220

251

282

...

4

168

209

250

291

332

373

...

5

260

311

362

413

464

...

6

372

433

494

555

...

7

504

575

646

...

8

656

737

...

9

828

...

...

...

...

...

...

...

...

...

...

...

...

...

Таблица 13

Фрагмент таблицы T1.2 с затененными клетками

m


k

0

1

2

3

4

5

6

7

8

9

...

0

2

5

8

11

14

17

20

23

26

29

...

1

9

22

35

48

61

74

87

100

113

126

...

2

16

39

62

85

108

131

154

177

200

223

...

3

23

56

89

122

155

188

221

254

287

320

...

4

30

73

116

159

202

245

288

331

374

417

...

5

37

90

143

196

249

302

355

408

461

514

...

6

44

107

170

233

296

359

422

485

548

611

...

7

51

124

197

270

343

416

489

562

635

708

...

8

58

141

224

307

390

473

556

639

722

805

...

9

65

158

251

344

437

530

623

716

809

902

...

...

...

...

...

...

...

...

...

...

...

...

...

Таблица 14

Фрагмент таблицы T1.3 с затененными клетками

m


k

0

1

2

3

4

5

6

7

8

9

...

0

8

17

26

35

44

53

62

71

80

89

...

1

36

55

74

93

112

131

150

169

188

...

2

84

113

142

171

200

229

258

287

...

3

152

191

230

269

308

347

386

...

4

240

289

338

387

436

485

...

5

348

407

466

525

584

...

6

476

545

614

683

...

7

624

703

782

...

8

792

881

...

9

980

...

...

...

...

...

...

...

...

...

...

...

...

...



Задать вопрос