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; |
||
LONG INT root n = ENTIER long sqrt( n ); |
|||
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 # |
|||
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> |
||