Multiplicative order: Difference between revisions

Add Factor
(Add Factor)
Line 953:
user=> (ord 37 1000)
100
</pre>
 
=={{header|Factor}}==
{{works with|Factor|0.99 2020-01-23}}
<lang factor>USING: kernel math math.functions math.primes.factors sequences ;
 
: (ord) ( a pair -- n )
first2 dupd ^ swap dupd [ /i ] keep 1 - * divisors
[ swap ^mod 1 = ] 2with find nip ;
 
: ord ( a n -- m )
2dup gcd nip 1 =
[ group-factors [ (ord) ] with [ lcm ] map-reduce ]
[ 2drop 0/0. ] if ;</lang>
{{out}}
<pre>
IN: scratchpad 37 1000 ord .
100
IN: scratchpad 10 100 ^ 1 + 7919 ord .
3959
</pre>
 
1,808

edits