1

У меня цикл

int x;
for (int i = 1; i <= 30; i++)
{
    if (pow(i, 2) % 9 == 0)
        x = ...;
}

т.е когда i=3,9,18,27 выполнится действие. Как это проверить? pow(i,2)%9 не работает, ибо "выражение должно относиться к целочисленному типу или типу перечисления без области видимости".

Yui
  • 11
  • (i * i) % 9 == 0? –  Oct 23 '20 at 08:12
  • 1
    Вот скажите, ЗАЧЕМ здесь вызов pow? Посмотрите тут: https://ru.stackoverflow.com/a/1143442/195342 В вашем конкретном случае - проверяйте просто делимость на 3: if(i%3==0) ... – Harry Oct 23 '20 at 08:20
  • Сори, я ток недавно начал учить c++. Я понимал что в данном случае можно i * i, а что сделать если там например 4-6 степень? Тоже все писать i * i * i * i...? Спасибо за статью, почитаю. – Yui Oct 23 '20 at 08:26
  • Есть разные варианты. Например, упомянутое в том ответе быстрое умножение. Потом - ну не в С++ вопрос! подумайте немного не как программист, а как математик :), и сообразите, как упростить признак делимости степени - ну, как я вам предложил проверку на делимость исходного числа на 3. Точно та же проверка будет при делимости, скажем, 18 степени на 9 - и не надо искать эту 18-ю степень :) – Harry Oct 23 '20 at 08:38
  • Понял, большое вам спасибо ^^ – Yui Oct 23 '20 at 10:30

0 Answers0