Выбрать главу

120 -> A*20 # Ну, вот наконец, простых чисел нет

121 -> 11*11

122 -> 2*61

123 -> 3*41

124 -> 2*2*31

125 -> 5*5*5

126 -> A*21

127

128 -> 2*2*2*2*2*2*2

129 -> 3*43

130 -> 2*5*13

131

132 -> A*22

133 -> 7*19

134 -> 2*67

135 -> 3*3*3*5

136 -> 2*2*2*17

137

138 -> A*23

139

140 -> 2*2*5*7

141 -> 3*47

142 -> 2*71

143 -> 11*13

144 -> A*24

145 -> 5*29

146 -> 2*73

147 -> 3*7*7

148 -> 2*2*37

149

150 -> A*25

151

152 -> 2*2*2*19

153 -> 3*3*17

154 -> 2*7*11

155 -> 5*31

156 -> A*26

157

158 -> 2*79

159 -> 3*53

160 -> 2*2*2*2*2*5

161 -> 7*23

162 -> A*27

163

164 -> 2*2*41

165 -> 3*5*11

166 -> 2*83

167

168 -> A*28

169 -> 13*13

170 -> 2*5*17

171 -> 3*3*19

172 -> 2*2*43

173

174 -> A*29

175 -> 5*5*7

176 -> 2*2*2*2*11

177 -> 3*59

178 -> 2*89

179

180 -> A*30

181

182 -> 2*7*13

183 -> 3*61

184 -> 2*2*2*23

---

Приложение

В последнее время я пишу на Питоне. Как вы знаете, в Python структурообразующими являются отступы. К сожалению HTML, как и FB2 “проглатывают” лишние пробелы. Для читабельности скрипта я добавляю в текст вместо отступа блок « . .».

Извиняюсь за многократно повторяющийся код, но выкладываю скрипты целиком.

03.08.23

prostoe5.py

1|#!/usr/bin/env python

 2|# -*- codning: utf-8 -*-

 3|import math

 4|L = [2]

 5|List = []

 6|def SaveList(L):

 7| . .f = open('list22.txt', 'w', encoding="utf-8")

 8| . .for i in L:

 9| . . . .f.write(i+'\n')#

10| . .f.close()

11|

12|def is_prime(n):

13| . .if n <= 1:

14| . . . .return False

15| . .if n % 2 == 0:

16| . . . .return n == 2

17|

18| . .max_div = math.floor(math.sqrt(n))

19| . .for i in range(3, 1 + max_div, 2):

20| . . . .if n % i == 0:

21| . . . . . .return False

22| . .return True

23|

24|num = 0

25|def divisor(m):

26| . .global num

27| . .for c in L:

28| . . . .k = m // c

29| . . . .if k * c == m:

30| . . . . . .num = c

31| . . . . . .return k

32|

33|def decompose(m): # разложение на сомножетили

34| . .s = ''

35| . .while m > 1:

36| . . . .m = divisor(m)

37| . . . .s = s + str(num)+'*'

38| . .return s

39|

40|oldn = 0

41|for n in range(3,2900):

42| . .if is_prime(n):

43| . . . .L.append(n)

44| . . . .if n - oldn == 2: # обнаружение простых «двойников»

45| . . . . . .s = str(oldn)+ ' '+str(oldn +1)+'='+decompose(oldn +1)[:-1]+' '+ str(n)

46| . . . . . .List.append('---')

47| . . . . . .List.append(s)

48| . . . .oldn = n

50|

51|SaveList(List)

52|print('Done!')

/\/\/\/\/\/\/\/\/\/\/\/\

03.08.23

prostoe6.py

Распечатка списка простых чисел, с разложением окружения на сомножители.

1|#!/usr/bin/env python

 2|# -*- codning: utf-8 -*-

 3|import math, time

 4|t0 = time.time()

 5|L = [2]

 6|List = []

 7|def SaveList(L):

 8| . .f = open('listPP.txt', 'w', encoding="utf-8")

 9| . .for i in L:

10| . . . .f.write(i+'\n')#

11| . .f.close()

12|

13|def is_prime(n):

14| . .if n <= 1:

15| . . . .return False

16| . .if n % 2 == 0:

17| . . . .return n == 2

18|

19| . .max_div = math.floor(math.sqrt(n))

20| . .for i in range(3, 1 + max_div, 2):

21| . . . .if n % i == 0:

22| . . . . . .return False

23| . .return True

24|

25|num = 0

26|def divisor(m):

27| . .global num

28| . .for c in L:

29| . . . .k = m // c

30| . . . .if k * c == m:

31| . . . . . .num = c

32| . . . . . .return k

33|

34|def decompose(m): # разложение на сомножители

35| . .s = ''

36| . .while m > 1:

37| . . . .m = divisor(m)

38| . . . .s = s + str(num)+'*'

39| . .return s[:-1]

40|

41|for n in range(3,10000000):

42| . .if is_prime(n):

43| . . . .L.append(n)

44| . . . .s = decompose(n-1)+ ' '+str(n)+' '+decompose(n+1)

45| . . . .#List.append('---')

46| . . . .List.append(s)

47|

48|for i in List:

49| . .if i.find('2*3') == -1:

50| . . . .print(i)

51|

52|#SaveList(List)

53|

54|t1 = time.time()

55|print('Time required :', t1 - t0)

56|print('Done!')

57|

58|# for n in range(3,10000000):

59|# Time required : 1540.0686304569244 = 25,666 min

/\/\/\/\/\/\/\/\/\/\/\/\

04.08.23

prostoe6_a.txt

Проверяется окружение простого числа на делимость на 3.

1|#!/usr/bin/env python

 2|# -*- codning: utf-8 -*-

 3|import math, time

 4|t0 = time.time()

 5|

 6|def is_prime(n):

 7| . .if n <= 1:

 8| . . . .return False

 9| . .if n % 2 == 0:

10| . . . .return n == 2

11|

12| . .max_div = math.floor(math.sqrt(n))

13| . .for i in range(3, 1 + max_div, 2):

14| . . . .if n % i == 0:

15| . . . . . .return False

16| . .return True

17|

18|for n in range(3,100000000):

19| . .if is_prime(n):

20| . . . .#print(n)

21| . . . .if (n-1) % 3 != 0:

22| . . . . . .if (n+1) % 3 != 0:

23| . . . . . . . .print(n)

25|

26|t1 = time.time()

27|print('Time required :', t1 - t0)

28|print('Done!')

29|

30|# for n in range(3,10000000):

31|# Time required : 43.06231665611267

32|

33|# for n in range(3,100000000):

34|# Time required : 1084.299929857254 18 MIN

---

Такие вот дела.