Обсуждение:Функция Эйлера

message: __TOC__

message: В том числе к ув. уч. AVB.
Delphi
program Euler1;
 
{$APPTYPE CONSOLE}
 
uses 
  SysUtils;
 
function NOD (A,B: Word): Word;
var 
  X,Y: Word;
begin
  X := A;
  Y := B;
  while (X <> Y) do
  begin
  if (X > Y) then 
    Dec(X, Y)
  else 
    Dec(Y, X);
  end;
  NOD := X;
end;
 
var
  N: Word;
  I,A: Word;
 
begin
  WriteLn ('Input N: ');
  ReadLn (N);
  A := 0;
  for I := 1 to N-1 do
    if (NOD(I, N) = 1) then
      Inc (A);
  WriteLn ('The Euler Function of N is: ', A);
  ReadLn;
end.
В чем энциколпедическая значимость данного фрагмента кода в данной статье? К теме статьи в нем относится только 3 (три!) строки. остальное - функция НОД (это одна из первых функций, которые пишут при изучении языков программирования) и шелуха, не несущая смысловой нагрузки (ввод-вывод, объявления переменных, delphi-специфичные параметры) -- этому тоже учат в самом начале). У нас, простите, энциклопедическая статья или учебник по программированию (плавно переходящий в склад решений школьных задач по информатике). Учебникам место на викиучебнике. Решения готовые для школьников -- это еще хуже.
IMHO не нужно приводить полный код программ, достаточно только показать основную функцию. И не нужно показывать ее в 5ти реализациях на паскале, или на куче языков. У нас здесь не сравнение языков и вариаций паскаля, а энциклопедия `a5b 20:15, 11 июля 2009 (UTC)
replies: text: Да, про паскаль ошибся, это в другой статье было, там clrscr; использовался. Но, несмотря на известность Delphi, это мертвый продукт.  `a5b 20:16, 11 июля 2009 (UTC)
И еще, что популярнее или известнее, delphi или python? Какие языки, по-вашему, ориентированы на математику? (Я бы отнес к ним: Fortran, C/C++.) `a5b 20:20, 11 июля 2009 (UTC)
thread_title:  Код на Дельфи

message: Не затирайте код целиком, если Вам в нем что-то не нравится,
или покрайней мере приводите свою версию.
* Я объясню, почему я (уже три раза) убрал пример на питоне: цель примеров - показать принципы реализации на самых используемых языках (а то вообще псевдокодом можно ограничиться), а не дать список всех возможных реализаций на всех возможных языках. А питон при этом не является языком, ориентированным на математику. Поэтому я считаю, что захламлять эту статью реализацией на питоне - не след. -- AVBtalk 00:59, 20 июня 2009 (UTC)
*: Если руководствоваться этой логикой, то пример на F# тоже стоит удалить. --Ashik talk 05:51, 20 июня 2009 (UTC)
* И ещё: я использовал откат, при котором нельзя дать описание правки-отката, потому что вы вставляете свой код в несколько правок, и чтобы не захламлять историю индивидуальными отменами или не формировать "отмена такая-то" вручную, я откатил ваши правки. -- AVBtalk 01:01, 20 июня 2009 (UTC)
==== Про Python ====
• Немного захламлю тут.
Не согласен, питон является языком ориентированым на программиста,
плохо комментированные примеры «на мертвых и плохо спроектированных» (при всем уважении к авторам)
языках не дают понятия об алгоритме, хотя любое императивное 
описание будет аналогичным с приведенными. 
Можно попробовать написать на питоне в функциональном стиле.
Про захламление не думал, теперь буду.
w495 03:25, 20 июня 2009 (UTC)
thread_title:  Код на питоне 

message: • Немного захламлю тут.
Не согласен, питон является языком ориентированым на программиста,
плохо комментированные примеры «на мертвых и плохо спроектированных» (при всем уважении к авторам)
языках не дают понятия об алгоритме, хотя любое императивное 
описание будет аналогичным с приведенными. 
Можно попробовать написать на питоне в функциональном стиле.
Про захламление не думал, теперь буду.
w495 03:25, 20 июня 2009 (UTC)
thread_title:  Про Python 

thread_title:  Рецензия на 16 ноября 2012 года 

message: В статье написан бред. Фактически, там вводится отображение \psi: \mathbb{Z}_{m}^{\times} \times \mathbb{Z}_{m'}^{\times} \rightarrow \mathbb{Z}_{mm'}, где \psi(a, a') = am' + a'm. В первой теореме доказывается инъективность этого отображения. Вторая утверждает, что его область значений — не \mathbb{Z}_{mm'}, а \mathbb{Z}_{mm'}^{\times}. Для полноты доказательства необходима ещё сюръективность, сейчас можно только сказать, что \varphi(m)\varphi(m') \leq \varphi(mm'). Можно сослаться на китайскую теорему об остатках, можно повторить её доказательство для случая двух уравнений.
Предлагаю как-то так:
replies: text: Покажем, что любой элемент A приведённой системы вычетов по модулю mm' представим в виде суммы am' + a'm. Для этого подберём соответствующие a и a' из приведённых систем вычетов по модулю m и m'.

text: Поскольку (m, m') = 1, расширенным алгоритмом Евклида можно найти линейное разложение единицы через m и m'
replies: text: : mn + m'n' = 1

text: Так как это верно для чисел, это верно и для кольца вычетов по модулю mm'
replies: text: : mn + m'n' \equiv 1 \pmod {mm'}

text: Домножим обе части этого равенства на A
replies: text: : m(nA) + m'(n'A) \equiv A \pmod {mm'}

text: Найдено разложение A в кольце по модулю mm', а нужно в кольцах по модулю m и m'. Положим
replies: text: : \begin{matrix}a \equiv n'A && \pmod {m} \\
a' \equiv nA && \pmod {m'}\end{matrix}

text: Покажем, что, действительно
replies: text: : A \equiv am' + a'm \pmod {mm'}

text: Домножаем определения a и a' на m' и m, и, учитывая взаимную простоту m и m' получаем, что
replies: text: : \begin{matrix}am' \equiv m'n'A && \pmod {mm'} \\
a'm \equiv mnA && \pmod {mm'}\end{matrix}

text: Складываем
replies: text: : am' + a'm \equiv mnA + m'n'A \equiv A \pmod {mm'}

text: Что и требовалось доказать.
Pastafarianist 22:13, 26 ноября 2013 (UTC)
thread_title:  Некорректность доказательства мультипликативности