Программирование на языке Python
Вложенные циклы
Вложенные циклы
Вложенные циклы
Вложенные циклы
Поиск простых чисел – как улучшить?
308.50K
Категория: ПрограммированиеПрограммирование

Вложенные циклы

1. Программирование на языке Python

1
Программирование
на языке Python
§ 58. Вложенные циклы
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

2. Вложенные циклы

Алгоритмы и программирование, язык Python, 10 класс
2
Вложенные циклы
Задача. Вывести все простые числа в диапазоне
от 2 до 1000.
сделать для n от 2 до 1000
если число n простое то
вывод n
нет делителей [2.. n-1]:
проверка в цикле!
? Что значит «простое число»?
for n in range(2, 1001):
if число n простое:
print( n )
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

3. Вложенные циклы

Алгоритмы и программирование, язык Python, 10 класс
3
Вложенные циклы
for n in range(2, 1001):
count = 0
for k in range(2,n):
if n % k == 0:
count += 1
if count == 0:
print( n )
К.Ю. Поляков, Е.А. Ерёмин, 2018
вложенный цикл
http://kpolyakov.spb.ru

4. Вложенные циклы

Алгоритмы и программирование, язык Python, 10 класс
4
Вложенные циклы
for i in range(1,4):
for k in range(1,4):
print( i, k )
? Как меняются переменные?
! Переменная внутреннего
цикла изменяется быстрее!
К.Ю. Поляков, Е.А. Ерёмин, 2018
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
http://kpolyakov.spb.ru

5. Вложенные циклы

Алгоритмы и программирование, язык Python, 10 класс
5
Вложенные циклы
for i in range(1,5):
for k in range(1,i+1):
print( i, k )
? Как меняются переменные?
! Переменная внутреннего
цикла изменяется быстрее!
К.Ю. Поляков, Е.А. Ерёмин, 2018
1 1
2 1
2 2
3 1
3 2
3 3
4 1
4 2
4 3
4 4
http://kpolyakov.spb.ru

6. Поиск простых чисел – как улучшить?

Алгоритмы и программирование, язык Python, 10 класс
6
Поиск простых чисел – как улучшить?
n k m, k m k 2 n k n
? Что плохо?
while k <= math.sqrt(n):

count = 0
k=2
Как ещё улучшить?
while k*k <= n :
if n % k == 0:
выйти из цикла
count += 1
while k*k <= n:
k += 1
if n % k == 0: break
k += 1
если вышли
if k*k > n:
по условию
print ( n )
?
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
English     Русский Правила