Largest prime factor: Difference between revisions

Content added Content deleted
(→‎{{header|ALGOL 68}}: another bug fix)
(→‎{{header|ALGOL 68}}: Optimisation and more test cases)
Line 23: Line 23:
# odd factors #
# odd factors #
LONG INT k := 3;
LONG INT k := 3;
WHILE k * k <= n DO
LONG INT root n = ENTIER long sqrt( n );
WHILE v MOD k = 0 DO
WHILE k <= root n AND v > 1 DO
WHILE v MOD k = 0 AND v > 1 DO
max factor := k;
max factor := k;
v OVERAB k
v OVERAB k
Line 32: Line 33:
IF v > 1 THEN v ELSE max factor FI
IF v > 1 THEN v ELSE max factor FI
FI # max prime factor # ;
FI # max prime factor # ;
# test the max prime factor routine #
LONG INT n = 600 851 475 143;
PROC test = ( LONG INT n )VOID:
print( ( "Largest prime factor of ", whole( n, 0 ), " is ", whole( max prime factor( n ), 0 ), newline ) )
print( ( "Largest prime factor of ", whole( n, 0 ), " is ", whole( max prime factor( n ), 0 ), newline ) );
# test cases #
test( 600 851 475 143 );
test( 6 008 );
test( 751 )
END</lang>
END</lang>
{{out}}
{{out}}
<pre>
<pre>
Largest prime factor of 600851475143 is 6857
Largest prime factor of 600851475143 is 6857
Largest prime factor of 6008 is 751
Largest prime factor of 751 is 751
</pre>
</pre>