emath saloon

新規発言一覧最新記事過去一覧検索HOME

No.1436  Re[3]:13396:ユークリッドの互除法における割り算の続き
発言者: 飯島 徹
発言日: 2017 10/20 07:25
さらに修正と tbz さんのやりたかったということを追加してみた・ω・

\documentclass[dvipdfmx]{jsarticle}
\usepackage{tikz,xparse,amssymb}%
\usetikzlibrary{calc,math}%
\begin{document}
\ExplSyntaxOn
\int_new:N \l_temp_tempA_int
\int_new:N \l_temp_node_number_int
\int_new:N \l_temp_hijosu_int
\int_new:N \l_temp_josu_int
\int_new:N \l_temp_shou_int
\int_new:N \l_temp_seki_int
\int_new:N \l_temp_amari_int
\int_new:N \l_temp_NEXT_int
\NewDocumentCommand \EuclidDiv{mm}{%
 \int_zero:N \l_temp_node_number_int
 \node(余り0)[inner~sep=0pt]{#2};
 \Original_EuclidDiv:nn {#1}{#2}
}%
\cs_new:Npn \Original_EuclidDiv:nn #1#2{%
 \int_set:Nn \l_temp_hijosu_int {#1}
 \int_set:Nn \l_temp_josu_int {#2}
 \Original_Get_Amari:nnN{#1}{#2}\l_temp_amari_int
 \int_set:Nn \l_temp_shou_int {(#1-\l_temp_amari_int)/#2}
 \int_set:Nn \l_temp_seki_int {\l_temp_josu_int*\l_temp_shou_int}
 \int_set:Nn \l_temp_NEXT_int {\l_temp_node_number_int+1}
 \node(被除数\int_use:N \l_temp_NEXT_int)at(余り\int_use:N \l_temp_node_number_int.east)%
 [inner~xsep=0pt,right]{\int_use:N \l_temp_hijosu_int};
 \tikzmath{
  coordinate~\C;
  \C1=(被除数\int_use:N \l_temp_NEXT_int.east);
  \C2=(被除数\int_use:N \l_temp_NEXT_int.west);
  \WIDTH=\Cx1-\Cx2;
 }%
 \node at($(余り\int_use:N \l_temp_node_number_int.east)!1/2!(被除数\int_use:N \l_temp_NEXT_int.west)$){)};
 \int_incr:N \l_temp_node_number_int
 \node(商\int_use:N \l_temp_node_number_int)at($(被除数\int_use:N \l_temp_node_number_int)+(0,1)$)[text~width=\WIDTH-6pt,inner~xsep=0pt,align=right]{\int_use:N \l_temp_shou_int};
 \node(積\int_use:N \l_temp_node_number_int)at($(被除数\int_use:N \l_temp_node_number_int)+(0,-1)$)[text~width=\WIDTH-6pt,inner~xsep=0pt,align=right]{\int_use:N \l_temp_seki_int};
 \node(余り\int_use:N \l_temp_node_number_int)at($(積\int_use:N \l_temp_node_number_int)+(0,-1)$)[text~width=\WIDTH-6pt,inner~xsep=0pt,align=right]{\int_use:N \l_temp_amari_int};
 \draw(被除数\int_use:N \l_temp_node_number_int.north~west)--(被除数\int_use:N \l_temp_node_number_int.north~east);
 \draw(余り\int_use:N \l_temp_node_number_int.north~west)--(余り\int_use:N \l_temp_node_number_int.north~east);
 \edef\tempjosu{\int_use:N \l_temp_josu_int}%
 \edef\tempamari{\int_use:N \l_temp_amari_int}%
 \ifnum\l_temp_amari_int>1\relax
  \Original_EuclidDiv:nn {\tempjosu}{\tempamari}%
 \fi
}%
\cs_new:Npn \Original_Get_Amari:nnN #1#2#3{%
 \int_set:Nn \l_temp_tempA_int{#1}
 \int_do_while:nn {\l_temp_tempA_int >= #2}
 {\int_set:Nn \l_temp_tempA_int {\l_temp_tempA_int-#2}}
 \int_set:Nn #3 {\l_temp_tempA_int}
}%
\ExplSyntaxOff
$a=92$,$b=197$とおく.
\begin{center}
 \begin{tikzpicture}[outer xsep=3pt,y={(0,1.2em)}]
  \EuclidDiv{197}{92}
  \node(T1)at($(被除数1.east)+(1,0)$)[right]{$\therefore13=197-2\times92=b-2a$};
  \node(T2)at(T1.west|-余り1)[right]{$\therefore1=92-7\times13=a-7(b-2a)=15a-7b$};
  \node(N2)at($(T2.east)+(2,0)$)[left]{(2)};
  \node(N1)at(N2.east|-T1)[left]{(1)};
  \draw[thick,loosely dotted](T1.east)--(N1.west)(T2.east)--(N2.west);
 \end{tikzpicture}
\end{center}
上記の計算より,$(x,\ y)=(15,\ -7)$は$92x+197y=1$の1つの解である.
\end{document}

▼関連発言

1432:13396:ユークリッドの互除法における割り算の続き [飯島 徹] 10/19 08:20
 ├1433:Re:13396:ユークリッドの互除法における割り算の続き [飯島 徹] 10/19 08:24
 └1434:Re:13396:ユークリッドの互除法における割り算の続き [田中徹] 10/19 22:59
  └1435:Re[2]:13396:ユークリッドの互除法における割り算の続き [飯島 徹] 10/20 05:55
   └1436:Re[3]:13396:ユークリッドの互除法における割り算の続き [飯島 徹] 10/20 07:25<-last

  返信フォーム [引用]
名 前 保存
題 名
メール省略可
★この板では,投稿者が改行を入れない限り
 延々と右に続きます。適宜,改行を入れてください。
発 言
URL 省略可
PASSWORD
書き込む

Pass 保存


CGIROOM