Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // python:
- def factors(n):
- for p in primes():
- k = 0
- while n % (p**(k+1)) == 0: k += 1
- if k > 0: yield (p, k)
- // rust??
- fn factors(n: u64) -> std::iter::Map<u64, u64> {
- let cur = Cell::new(n);
- primes()
- .take_while(|&p| p <= cur.get())
- .filter(|p| cur.get() % p == 0)
- .map(|&p| (1..cur.get())
- .take_while(|&k| cur.get() % p.pow(k) == 0)
- .max()
- .map(|&k| (p, k))
- .unwrap())
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement