Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def wheel_235(n):
- # Removes all the factors 2, 3 and 5
- for p in [2, 3, 5]:
- if n % p == 0 and n > p:
- n //= p
- while n % p == 0:
- n //= p
- if n == 1: return p
- i = 0
- # Iterates over all numbers not divisible
- # by 2, 3, or 5
- limit = int(n**0.5) + 1
- while i < limit:
- for k in [1, 7, 11, 13, 17, 19, 23, 29]:
- if n % (i+k) == 0 and i+k > 1:
- n //= (i+k)
- while n % (i+k) == 0:
- n //= (i+k)
- if n == 1: return i+k
- limit = int(n**0.5) + 1
- i += 30
- # 2*3*5 = 30. We have already iterated over
- # [1, 7, 11, 13, 17, 19, 23, 29]
- return n
- if __name__ == '__main__':
- print wheel_235(600851475143)
Advertisement
Add Comment
Please, Sign In to add comment