「計算式」アクションの登場で数計算関連のレシピの多くの改善が見込めます.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS14.0.1
スポンサーリンク
ダウンロード・使い方
https://www.icloud.com/shortcuts/822a4180d497452e9125e75afa9c7798
最初の「入力を要求」にも書いてありますが, 2数の表記は例えば17,19のように","で区切って入力します.
2数を分けて入力させるのが面倒だったというだけです.
フロー
上でも書いた通り, a,bという形で2数を入力させ, ","で分割して各々の数を取得します.
上で定義した変数a,bは表示のために使うので, 演算用にそれぞれx,yの変数に置き, 更に演算効率のためにx>yとなるようにします.
ここから実際の処理を行います.
処理はユークリッドの互除法を利用しています, そのため繰り返し回数nは
を満たします, なのでこれを更にfloorで小数点を切り捨てて繰り返し回数としています.
もしfmod(x,y)=0ならばyがxの約数なのでgcd(x,y)=yであることは確定です.
そうでなく, かつ1余るなら2数は互いに素なのでgcd(x,y)=1であることが確定します.
上記のどちらでもなかった場合は, xをyに代入し, yをfmod(x,y)の値に上書きして繰り返しに戻ります.
実行
これで結果が正しければOKですね.
普通では扱わないような大きな数でも待たされることなく素早く結果を返してくれます.
〆
原始言語からの脱却で数処理の速度がかなりよくなりました.
他のレシピも追々修正予定です.