Skip to content

Instantly share code, notes, and snippets.

@aomoriringo
Last active August 29, 2015 14:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aomoriringo/a16ea1b208af69d39ad9 to your computer and use it in GitHub Desktop.
Save aomoriringo/a16ea1b208af69d39ad9 to your computer and use it in GitHub Desktop.
Project Euler 003
reltime: 54.894354
function! P003()
let l:start = reltime()
let l:num = StringToBigint("600851475143")
let l:primes = Factorize(l:num)
for i in l:primes
echo BigintToString(i)
endfor
echo reltimestr(reltime(l:start))
endfunction
function! Factorize(num)
let l:primes = []
let l:n = deepcopy(a:num)
let l:a = StringToBigint("2")
while 1
while 1
let l:tmp = BigMod(l:n, l:a)
if BigCompare(l:tmp, StringToBigint("0")) == 0
let l:n = BigDiv(l:n, l:a)
call add(primes, l:a)
else
break
endif
endwhile
if BigCompare(l:n, StringToBigint("1")) == 0
break
endif
let l:a = BigAdd(l:a, StringToBigint("1"))
endwhile
return l:primes
endfunction
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment