Integer long division: Difference between revisions
Content added Content deleted
SqrtNegInf (talk | contribs) m (→{{header|Raku}}: overline was off by one) |
SqrtNegInf (talk | contribs) (Added Perl) |
||
Line 199: | Line 199: | ||
Cycle is <00019007793195210036114807070899068618133434708230374453525945637711461699296711651777228663752138376734461129062915795476145219540011404675917126021668884242539441170880060824938224672115567382626877019578026991066337198251283026040676677437749477285687131724006842805550275613001330545523664702528036494962934803269340429576126211746816194639802318950769815624406006462649686371412279034404105683330165367800798327314198821516821896977760881961604257745675727048089716783881391370461889374643603877589811822847367420642463409998099220680478996388519292910093138186656529176962554647405436228853830070328834822277133624786162326553887093708420452385478045998859532408287397833111575746055882911993917506177532788443261737312298042197300893366280174871697395932332256225052271431286827599315719444972438699866945447633529747196350503706519673065957042387378825318380536019768104923018437559399353735031362858772096559589431666983463219920167268580117848317810302223911803839574225432427295191028321611860862953811062535639612241018817715263257935753659> |
Cycle is <00019007793195210036114807070899068618133434708230374453525945637711461699296711651777228663752138376734461129062915795476145219540011404675917126021668884242539441170880060824938224672115567382626877019578026991066337198251283026040676677437749477285687131724006842805550275613001330545523664702528036494962934803269340429576126211746816194639802318950769815624406006462649686371412279034404105683330165367800798327314198821516821896977760881961604257745675727048089716783881391370461889374643603877589811822847367420642463409998099220680478996388519292910093138186656529176962554647405436228853830070328834822277133624786162326553887093708420452385478045998859532408287397833111575746055882911993917506177532788443261737312298042197300893366280174871697395932332256225052271431286827599315719444972438699866945447633529747196350503706519673065957042387378825318380536019768104923018437559399353735031362858772096559589431666983463219920167268580117848317810302223911803839574225432427295191028321611860862953811062535639612241018817715263257935753659> |
||
Period is 1052</pre> |
Period is 1052</pre> |
||
=={{header|Perl}}== |
|||
<lang perl>use strict; |
|||
use warnings; |
|||
sub long_division { |
|||
my($n, $d) = @_; |
|||
my %seen; |
|||
my($numerator,$denominator) = (abs $n, abs $d); |
|||
my $negative = ($n < 0 xor $d < 0) ? '-' : ''; |
|||
my $fraction = sprintf '%d.', $numerator / $denominator; |
|||
my $position = length $fraction; |
|||
$numerator %= $denominator; |
|||
while (!$seen{$numerator}) { |
|||
return 0, $fraction =~ s/\.$//r unless $numerator; |
|||
$seen{$numerator} = $position; |
|||
$fraction .= int 10 * $numerator / $denominator; |
|||
$numerator = 10 * $numerator % $denominator; |
|||
$position++; |
|||
} |
|||
my $period = length($fraction) - $seen{$numerator}; |
|||
substr $fraction, $seen{$numerator}, 0, '{'; $fraction .= '}'; |
|||
$period, $negative . $fraction |
|||
} |
|||
printf "%10s Period is %5d : %s\n", $_, long_division split '/' |
|||
for <0/1 1/1 1/5 1/3 -1/3 1/7 -83/60 1/17 10/13 3227/555 1/149></lang> |
|||
{{out}} |
|||
<pre> 0/1 Period is 0 : 0 |
|||
1/1 Period is 0 : 1 |
|||
1/5 Period is 0 : 0.2 |
|||
1/3 Period is 1 : 0.{3} |
|||
-1/3 Period is 1 : -0.{3} |
|||
1/7 Period is 6 : 0.{142857} |
|||
-83/60 Period is 3 : -1.38{3} |
|||
1/17 Period is 16 : 0.{0588235294117647} |
|||
10/13 Period is 6 : 0.{769230} |
|||
3227/555 Period is 4 : 5.8{144} |
|||
1/149 Period is 148 : 0.{0067114093959731543624161073825503355704697986577181208053691275167785234899328859060402684563758389261744966442953020134228187919463087248322147651}</pre> |
|||
=={{header|Phix}}== |
=={{header|Phix}}== |