Дано целое число n; сформулируйте и обоснуйте критерии делимости числа n^3 + 2n^2 - n + 6 на 3, и предложите альтернативные способы проверки делимости для больших n
Критерий: многочлен f(n)=n3+2n2−n+6f(n)=n^3+2n^2-n+6f(n)=n3+2n2−n+6 делится на 333 тогда и только тогда, когда nnn делится на 333, т.е. f(n)≡0(mod3) ⟺ n≡0(mod3)f(n)\equiv 0\pmod{3}\iff n\equiv 0\pmod{3}f(n)≡0(mod3)⟺n≡0(mod3). Обоснование (кратко): так как 6≡0(mod3)6\equiv 0\pmod{3}6≡0(mod3), имеем f(n)≡n3+2n2−n(mod3).
f(n)\equiv n^3+2n^2-n\pmod{3}. f(n)≡n3+2n2−n(mod3).
Проверим три класса вычетов по модулю 333: если n≡0(mod3),f(n)≡0;если n≡1(mod3),f(n)≡1+2−1≡2≢0;если n≡2(mod3),f(n)≡8+8−2≡2≢0.
\begin{aligned} &\text{если }n\equiv 0\pmod{3},\quad f(n)\equiv 0;\\ &\text{если }n\equiv 1\pmod{3},\quad f(n)\equiv 1+2-1\equiv 2\not\equiv 0;\\ &\text{если }n\equiv 2\pmod{3},\quad f(n)\equiv 8+8-2\equiv 2\not\equiv 0. \end{aligned} еслиn≡0(mod3),f(n)≡0;еслиn≡1(mod3),f(n)≡1+2−1≡2≡0;еслиn≡2(mod3),f(n)≡8+8−2≡2≡0.
Отсюда единственная возможность делимости на 333 — n≡0(mod3)n\equiv 0\pmod{3}n≡0(mod3). Альтернативные способы проверки для больших nnn: - Вычислить остаток n mod 3n\bmod 3nmod3. Для десятичных представлений это эквивалентно сумме цифр: n≡n\equivn≡ (сумма цифр nnn) (mod3)\pmod{3}(mod3). Если сумма цифр делится на 333, то и f(n)f(n)f(n) делится на 333. - Применить быстрое вычисление остатка: при потоковом вводе больших чисел поддерживать текущий остаток по модулю 333 (итеративно: новый остаток = (10⋅старый+новая цифра) mod 3(10\cdot\text{старый}+ \text{новая цифра})\bmod 3(10⋅старый+новаяцифра)mod3). - Для аналитических выражений nnn использовать вычисления по модулю 333 (свести задачу к одному из трёх вычетов 0,1,20,1,20,1,2). - Программно: проверить условие n%3==0n\%3==0n%3==0 в любом языке с большими целыми числами.
Обоснование (кратко): так как 6≡0(mod3)6\equiv 0\pmod{3}6≡0(mod3), имеем
f(n)≡n3+2n2−n(mod3). f(n)\equiv n^3+2n^2-n\pmod{3}.
f(n)≡n3+2n2−n(mod3). Проверим три класса вычетов по модулю 333:
если n≡0(mod3),f(n)≡0;если n≡1(mod3),f(n)≡1+2−1≡2≢0;если n≡2(mod3),f(n)≡8+8−2≡2≢0. \begin{aligned}
&\text{если }n\equiv 0\pmod{3},\quad f(n)\equiv 0;\\
&\text{если }n\equiv 1\pmod{3},\quad f(n)\equiv 1+2-1\equiv 2\not\equiv 0;\\
&\text{если }n\equiv 2\pmod{3},\quad f(n)\equiv 8+8-2\equiv 2\not\equiv 0.
\end{aligned}
если n≡0(mod3),f(n)≡0;если n≡1(mod3),f(n)≡1+2−1≡2≡0;если n≡2(mod3),f(n)≡8+8−2≡2≡0. Отсюда единственная возможность делимости на 333 — n≡0(mod3)n\equiv 0\pmod{3}n≡0(mod3).
Альтернативные способы проверки для больших nnn:
- Вычислить остаток n mod 3n\bmod 3nmod3. Для десятичных представлений это эквивалентно сумме цифр: n≡n\equivn≡ (сумма цифр nnn) (mod3)\pmod{3}(mod3). Если сумма цифр делится на 333, то и f(n)f(n)f(n) делится на 333.
- Применить быстрое вычисление остатка: при потоковом вводе больших чисел поддерживать текущий остаток по модулю 333 (итеративно: новый остаток = (10⋅старый+новая цифра) mod 3(10\cdot\text{старый}+ \text{новая цифра})\bmod 3(10⋅старый+новая цифра)mod3).
- Для аналитических выражений nnn использовать вычисления по модулю 333 (свести задачу к одному из трёх вычетов 0,1,20,1,20,1,2).
- Программно: проверить условие n%3==0n\%3==0n%3==0 в любом языке с большими целыми числами.