@Tech-Infoman

Почему не работает код (цикл for, continue)?

Имеется кусок кода:

import math
summa = 0
num = int(input())
for i in range(1, int(math.sqrt(num)) + 1):
    if num % i == 0:
        summa += i
    if i == 1 or num % i == i:
        continue
    summa += (num//i)
print(summa)

Проблема заключается в том, что у меня почему-то continue не работает должным образом.
При выполнении условий continue, строка с summa += (num//i) должна быть пропущена и должен быть переход на следующую итерацию в цикле for.
Насколько я понимаю, оператор continue позволяет перейти к следующей итерации цикла for до завершения всех команд в теле цикла. Однако, здесь почему-то так не происходит.

Sample Input:
2
10
20

Sample Output:
1
8
# 22
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 2
sheerluck
@sheerluck
import math
for num in [2, 10, 20]:
    summa = 0
    print(f"{range(1, int(math.sqrt(num)) + 1)}")
    for i in range(1, int(math.sqrt(num)) + 1):
        if num % i == 0:
            summa += i
            print(f"summa += {i}")
        if i == 1 or num % i == i:
            if i == 1:
                print(f"continue from i == 1")
            elif num % i == i:
                print(f"continue from {num} % {i} == {i}")
            continue
        else:
            print(f"{num} % {i} != {i}  ({num % i})")
        summa += num // i
        print(f"{num} // {i} == {num // i}")
    print(f"{num=} {summa=}")
    print()


range(1, 2)
summa += 1
continue from i == 1
num=2 summa=1

range(1, 4)
summa += 1
continue from i == 1
summa += 2
10 % 2 != 2 (0)
10 // 2 == 5
10 % 3 != 3 (1)
10 // 3 == 3
num=10 summa=11

range(1, 5)
summa += 1
continue from i == 1
summa += 2
20 % 2 != 2 (0)
20 // 2 == 10
20 % 3 != 3 (2)
20 // 3 == 6
summa += 4
20 % 4 != 4 (0)
20 // 4 == 5
num=20 summa=28
Ответ написан
Комментировать
@Tech-Infoman Автор вопроса
Нашел свою ошибку. Оказалось я расставил if условия не в том формате, как следовало. Спасибо за то, что пытались помочь.
import math
summa = 0
num = int(input())
for i in range(1, int(math.sqrt(num)) + 1):
    if num % i == 0:
        summa += i
        if i != 1 and num % i != i:
            summa += (num//i)
print(summa)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы