Vì không ai cố gắng hack điều này bằng phương pháp reduce
cũ, tôi sẽ lấy nghề này. Phương pháp này không linh hoạt cho các vấn đề như thế này bởi vì nó thực hiện vòng lặp của các hành động lặp đi lặp lại trên mảng các đối số và không có cách nào để làm gián đoạn vòng lặp này theo mặc định. Cửa mở sau khi chúng tôi đã thực hiện interupted reduce
của riêng mình cho các vòng lặp bị gián đoạn như sau:
from functools import reduce
def inner_func[func, cond, x, y]:
res = func[x, y]
if not cond[res]:
raise StopIteration[x, y]
return res
def ireducewhile[func, cond, iterable]:
# generates intermediary results of args while reducing
iterable = iter[iterable]
x = next[iterable]
yield x
for y in iterable:
try:
x = inner_func[func, cond, x, y]
except StopIteration:
break
yield x
Sau đó, chúng tôi có thể sử dụng một số func
giống như đầu vào của phương pháp giảm python tiêu chuẩn. Hãy để điều này được xác định theo cách sau:
def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
Giả sử chúng tôi muốn nhân tố số 600851475143, đầu ra dự kiến của chức năng này sau khi sử dụng nhiều lần chức năng này phải là thế này:
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
Mục đầu tiên của tuple là một số mà phương thức
def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
1 lấy và cố gắng chia cho ước số nhỏ nhất bắt đầu từ mục thứ hai và kết thúc với căn bậc hai của số này. Nếu không có ước số tồn tại, không có gì được trả lại. Bây giờ chúng ta cần bắt đầu với Iterator được xác định như thế này:def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
Cuối cùng, kết quả của vòng lặp là:
result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
Và phát ra các ước số chính có thể được bắt bởi:
if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
Note:
Để làm cho nó hiệu quả hơn, bạn có thể muốn sử dụng các số nguyên tố được tạo sẵn nằm trong phạm vi cụ thể thay vì tất cả các giá trị của phạm vi này.
Cho một số N, viết một chức năng hiệu quả để in tất cả các yếu tố chính của n. Ví dụ: nếu số đầu vào là 12, thì đầu ra phải là 2 2 2 3. Và nếu số đầu vào là 315, thì đầu ra phải là 3 3 5 7 7.n, write an efficient function to print all prime factors of n. For example, if the input number is 12, then the output should be “2 2 3”. And if the input number is 315, then the output should be “3 3 5 7”.
Cách tiếp cận đầu tiên:
Sau đây là các bước để tìm tất cả các yếu tố chính. & Nbsp; 1] trong khi n chia hết cho 2, in 2 và chia n cho 2. & nbsp; 2] Sau bước 1, n phải là lẻ. Bây giờ bắt đầu một vòng từ I = 3 đến căn bậc hai của n. Trong khi tôi chia n, in i và chia n cho i. Sau khi tôi không chia n, tăng i cho 2 và tiếp tục. & Nbsp; 3] Nếu n là số nguyên tố và lớn hơn 2, thì n sẽ không trở thành 1 trong hai bước trên. Vì vậy, in n nếu nó lớn hơn 2. & nbsp;
1]
While n is divisible by 2, print 2 and divide n by 2.
2] After step 1, n must be odd. Now start a loop from i = 3 to the square root of n. While i divides n, print i, and divide n by i. After i fails to divide n, increment i by 2 and continue.
3] If n is a prime number and is greater than 2, then n will not become 1 by the above two steps. So print n if it is greater than 2.
C++
def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
2
def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
3 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
4 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
5def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
6 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
7def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
9[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
7[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
9[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
5 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
6def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
8def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
9result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
5[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
9[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
9result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
9 3 3 5 70
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
63 3 5 72
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
9def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 3 3 5 77
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 reduce
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1reduce
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1reduce
5 reduce
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3C
reduce
8
reduce
9
def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
6 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
7def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
9[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6func
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
6func
3func
4[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
5 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
6def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
8def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
9result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
5[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8func
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
6func
3def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
17result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
9 3 3 5 70
def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 3 3 5 77
def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 3 3 5 77
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 reduce
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1reduce
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1reduce
5 reduce
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3C
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 interupted reduce
7[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
5 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
6def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
8def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
9def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
05[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
10[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6func
1 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
6func
3def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
31[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0Java
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
45 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
46result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
77def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
64[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
9[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
45 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
48def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
49 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
50[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
53 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
54 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
6 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
7def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
9result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
00[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
01[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
75[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
00[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
05result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
63def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
64def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
65def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
66def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
67result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
16[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
71def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
64 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
73[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
75[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
5 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
6def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
86def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
87def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
88__[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6reduce
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
95def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
66def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
67[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
9 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1212def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
64def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
67[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
53 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
54 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
6 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
23[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
28[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
29[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
9Python
def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
45 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
37[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
38 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
39[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
42[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
43 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
64 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
45[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
45 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
66__[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
50 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
64[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
52[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
42[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
45 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
42[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
57 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
64Các
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
42[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
43 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
78[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
45[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
45 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
66__def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
03C#
result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
50 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
85result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
42[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
45 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
42[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
57 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
78[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
9 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
94def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
64[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
48def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
12[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6func
1 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
6func
3def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
31[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0Java
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
28[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
75def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
45 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
46[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
45 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
48[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
49 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
50result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
00def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
48[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
75[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
00[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
05result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
9 3 3 5 70
result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
61[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
53 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
54 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
6 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
68[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 reduce
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6reduce
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3PHP
def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
80def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
81 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
7def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
83def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
67[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
83 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
90[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
94 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
95[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
9[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
83 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
00def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
83 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
02[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
5 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
6result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
08 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
09result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
08result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
14result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
08 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
00result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
08 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
18[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
83 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
25result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
08 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
27[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
94 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
08[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
525____28[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
9result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
83 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
00def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
83 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
40result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
08[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
9[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
9 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
83 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
51[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
94 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
83[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
525____28[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
9def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
83 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
61[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
7def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
83def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
75result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
66JavaScript
result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
67def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
81 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
03[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
77[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
75[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
81[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
5result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
86result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
88result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
90[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
5[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
99[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
75result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
03[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
9 3 3 5 70
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
12[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
75def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
16reduce
3
if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
18Output:
3 3 5 7
Độ phức tạp về thời gian: O [SQRT [N]]O[sqrt[n]]
Trong trường hợp xấu nhất [khi n hoặc sqrt [n] là số nguyên tố, ví dụ: lấy n = 11 hoặc n = 121 cho cả hai trường hợp cho vòng lặp chạy sqrt [n] lần] lần. Càng nhiều lần vòng lặp trong khi lặp lại trên một số mà nó làm giảm n ban đầu, điều này cũng làm giảm giá trị của sqrt [n]. Mặc dù độ phức tạp thời gian trường hợp tốt nhất là O [log [n]], khi các yếu tố chính của n chỉ là 2 và 3 hoặc n có dạng [2^x*[3^y] trong đó x> = 0 và y> = 0.
Không gian phụ trợ: O [1] O[1]
Điều này hoạt động như thế nào? & NBSP; Các bước 1 và 2 chăm sóc các số tổng hợp và bước 3 chăm sóc các số nguyên tố. Để chứng minh rằng thuật toán hoàn chỉnh hoạt động, chúng ta cần chứng minh rằng các bước 1 và 2 thực sự chăm sóc các số tổng hợp. Điều này rõ ràng là Bước 1 chăm sóc các số chẵn. Và sau bước 1, tất cả các yếu tố chính còn lại phải là lẻ [chênh lệch hai yếu tố chính phải ít nhất là 2], điều này giải thích lý do tại sao tôi được tăng lên bởi 2. & nbsp;
The steps 1 and 2 take care of composite numbers and step 3 takes care of prime numbers. To prove that the complete algorithm works, we need to prove that steps 1 and 2 actually take care of composite numbers. This is clear that step 1 takes care of even numbers. And after
step 1, all remaining prime factors must be odd [difference of two prime factors must be at least 2], this explains why i is incremented by 2.
Bây giờ phần chính là, vòng lặp chạy cho đến căn bậc hai của N cho đến khi n. Để chứng minh rằng tối ưu hóa này hoạt động, chúng ta hãy xem xét thuộc tính sau của số tổng hợp. & NBSP;
Mỗi số tổng hợp có ít nhất một yếu tố nguyên tố nhỏ hơn hoặc bằng với căn bậc hai của chính nó. & Nbsp; thuộc tính này có thể được chứng minh bằng cách sử dụng một câu lệnh truy cập. Đặt a và b là hai yếu tố của n sao cho a*b = n. Nếu cả hai đều lớn hơn √n, thì a.b> √n, * √n, điều này mâu thuẫn với biểu thức là A * b = n, & nbsp;
This property can be proved using
a counter statement. Let a and b be two factors of n such that a*b = n. If both are greater than √n, then a.b > √n, * √n, which contradicts the expression “a * b = n”.
Trong bước 2 của thuật toán trên, chúng tôi chạy một vòng lặp và thực hiện các mục sau trong vòng lặp & nbsp; a] Tìm yếu tố chính nhất i [phải nhỏ hơn √n,] & nbsp; b] loại bỏ tất cả các lần xuất hiện i khỏi bởi i. & nbsp; c] lặp lại các bước a và b cho chia n và i = i + 2. Các bước a và b được lặp lại cho đến khi n trở thành 1 hoặc số nguyên tố.
a] Find the least prime factor i [must be less than √n,]
b] Remove all occurrences i from n by repeatedly dividing n by i.
c] Repeat steps a and b for divided n and i = i + 2. The steps a and b are repeated till n
becomes either 1 or a prime number.
Cách tiếp cận thứ hai: Cách tiếp cận này tương tự như sàng của Eratosthenes.
Chúng ta có thể đạt được O [log n] cho tất cả các số tổng hợp bằng cách chia số liên tiếp của số đã cho bằng một số nguyên bắt đầu từ 2 đại diện cho hệ số hiện tại của số đó. Cách tiếp cận này hoạt động trên thực tế là tất cả các số tổng hợp đều có các yếu tố theo cặp không phải là 1 hoặc số như 6 = 3 x 2 và 9 = 3 x 3 trong khi đối với các số nguyên tố không có cặp nào khác ngoài 1 hoặc số.
Do đó, nếu chúng ta bắt đầu chia số cho số nguyên tố nhỏ nhất có thể [2] thì tất cả các bội số hoặc số tổng hợp của nó sẽ tự động được xóa trước khi chúng ta thực sự đạt đến số đó.
Ví dụ: Chúng ta có thể chia 12 cho 2 hai lần và loại bỏ các yếu tố đó từ 12 để nhận 3 do đó đảm bảo rằng tổng hợp số 4 [bội số 2] không xảy ra tại bất kỳ thời điểm nào sau này.
Tương tự, nếu chúng ta có một số lượng lớn không chia hết cho bất kỳ giá trị nào của C = 2 đến N-1 có nghĩa là nó là số nguyên tố như 13 [không chia hết từ 2 đến 12].
C++14
def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
2def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
3 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
4 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
5def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
6 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
7def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
9[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
30[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
33[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
9if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
38[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
40[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
9[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
44[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
48 if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
49[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 3 3 5 77
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 reduce
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1reduce
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1reduce
5 reduce
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3C
if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
65def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
6 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
7def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
9[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
30[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
48 if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
49def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 3 3 5 77
if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
80func
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
6func
3if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
84if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
80if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
86[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
48if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
80if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
49[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 reduce
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 3 3 5 77
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 reduce
1if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
71reduce
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1reduce
5 reduce
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3C
if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
71def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
73if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
71[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
76[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
9 if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
79[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
71def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
71def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 reduce
1if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
71reduce
5 reduce
6Java
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
00if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
86result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
48[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
00if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
49[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
45 3 3 5 709
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
49 3 3 5 711
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6reduce
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3C#
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
53 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
54 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
6 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
7def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
9if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
71[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
76[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
9 if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
79[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0
if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
71def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
71def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 reduce
1if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
71reduce
5 reduce
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
003 3 5 791
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
75[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
00if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
86result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
48[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
00if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
49[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3Java
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
45 3 3 5 709
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6reduce
3def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
49 3 3 5 711
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3Python3
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
53 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
54 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
6 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
7def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
9[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 3 3 5 723
def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
64[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
9[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
12[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
70[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
73[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1212____2703 3 5 730
result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
50reduce
46[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
45[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
67result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
9 3 3 5 733
def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
6663 3 5 730
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
48[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
48[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
003 3 5 737
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
75[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
53 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
54 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
6 3 3 5 756
def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
03[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
28[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
29[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
9
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
67def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
3 def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
05[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1reduce
74[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2reduce
77[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
0[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
9reduce
82result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8reduce
84[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
75result = list[ireducewhile[lambda x,y: div[x], lambda x: x is not None, iterable=gen[600851475143]]]
#result: [[600851475143, 2], [8462696833, 71], [10086647, 839], [6857, 1471]]
8if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
86[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
6if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
48 if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
49[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
1def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3def gener[prime]:
# returns and infinite generator [600851475143, 2], 0, 0, 0...
yield [prime, 2]
while True:
yield 0
3if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
16reduce
3
if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
18
1[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
54 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
6 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
7def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
8 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
9This Approach is best for all composite numbers and achieves
O[log n] but is O[n] otherwise.def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
8 def division[c]:
num, start = c
for i in range[start, int[num**0.5]+1]:
if num % i == 0:
return [num//i, i]
return None
73 O[1]if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
6[600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
2 [600851475143, 2] -> [8462696833 -> 71], [10086647 -> 839], [6857, 1471] -> None
76if len[result] == 1: output = result[0][0]
else: output = list[map[lambda x: x[1], result[1:]]]+[result[-1][0]]
#output: [2, 71, 839, 1471]
Prime Factorization using Sieve O[log n] for multiple queries
Thanks to Vishwas Garg for suggesting the above algorithm. Please write comments if you find anything incorrect, or you want to share more information about the topic
discussed above