A prime is a positive integer X that has exactly two distinct divisors: 1 and X. The first few prime integers are 2, 3, 5, 7, 11 and 13.
A prime D is called a prime divisor of a positive integer P if there exists a positive integer K such that D * K = P. For example, 2 and 5 are prime divisors of 20.
You are given two positive integers N and M. The goal is to check whether the sets of prime divisors of integers N and M are exactly the same.
For example, given:
- N = 15 and M = 75, the prime divisors are the same: {3, 5};
- N = 10 and M = 30, the prime divisors aren't the same: {2, 5} is not equal to {2, 3, 5};
- N = 9 and M = 5, the prime divisors aren't the same: {3} is not equal to {5}.
Write a function:
def solution(A, B)
that, given two non-empty arrays A and B of Z integers, returns the number of positions K for which the prime divisors of A[K] and B[K] are exactly the same.
For example, given:
A[0] = 15 B[0] = 75 A[1] = 10 B[1] = 30 A[2] = 3 B[2] = 5the function should return 1, because only one pair (15, 75) has the same set of prime divisors.
Write an efficient algorithm for the following assumptions:
- Z is an integer within the range [1..100,000];
- each element of arrays A and B is an integer within the range [1..2,147,483,647].
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a_gcd = gcd(max(a / ab_gcd, ab_gcd), min(a/ ab_gcd, ab_gcd))
b_gcd = gcd(max(b / ab_gcd, ab_gcd), min(b/ ab_gcd, ab_gcd))
#print(a_div_gcd, b_div_gcd)
if a_div_gcd == 1 and b_div_gcd == 1:
count += 1
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a_gcd = gcd(max(a / ab_gcd, ab_gcd), min(a/ ab_gcd, ab_gcd))
b_gcd = gcd(max(b / ab_gcd, ab_gcd), min(b/ ab_gcd, ab_gcd))
while a_gcd != 1:
#print(a_div_gcd, b_div_gcd)
if a_div_gcd == 1 and b_div_gcd == 1:
count += 1
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a_gcd = gcd(max(a / ab_gcd, ab_gcd), min(a/ ab_gcd, ab_gcd))
b_gcd = gcd(max(b / ab_gcd, ab_gcd), min(b/ ab_gcd, ab_gcd))
while a_gcd
#print(a_div_gcd, b_div_gcd)
if a_div_gcd == 1 and b_div_gcd == 1:
count += 1
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a_div_num = a / ab_gcd
b_div_num = b / ab_gcd
a_div_gcd = gcd(max(a_div_num, ab_gcd), min(a_div_num, ab_gcd))
b_div_gcd = gcd(max(b_div_num, ab_gcd), min(b_div_num, ab_gcd))
if a_div_num / a_div_gcd == 1 and b_div_num / b_div_gcd == 1:
count += 1
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
1.0 5.0 1.0 3.0 9.0 5.0
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a /= ab_gcd
b /= ab_gcd
print(a, b)
a_gcd = ab_gcd
b_gcd = ab_gcd
while gcd(a, a_gcd)
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a /= ab_gcd
b /= ab_gcd
print(a, b)
a_gcd = ab_gcd
b_gcd = ab_gcd
while gcd(a, a_gcd) != 1:
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a /= ab_gcd
b /= ab_gcd
print(a, b)
a_gcd , b_gcd = ab_gcd, b_gcd
while True:
gcd(a, a_gcd)
while True:
gcd()
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a /= ab_gcd
b /= ab_gcd
print(a, b)
a_gcd , b_gcd = ab_gcd, b_gcd
while True:
a_gcd = gcd(a, a_gcd)
while True:
b_gcd = gcd(b, b_gcd)
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a /= ab_gcd
b /= ab_gcd
print(a, b)
a_gcd , b_gcd = ab_gcd, ab_gcd
while True:
a_gcd = gcd(a, a_gcd)
while True:
b_gcd = gcd(b, b_gcd)
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a /= ab_gcd
b /= ab_gcd
print(a, b)
a_gcd , b_gcd = ab_gcd, ab_gcd
while a_gcd != 1:
a_gcd = gcd(a, a_gcd)
while b_gcd != 1:
b_gcd = gcd(b, b_gcd)
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a /= ab_gcd
b /= ab_gcd
print(a, b)
a_gcd , b_gcd = ab_gcd, ab_gcd
while a_gcd != 1:
a_gcd = gcd(a, a_gcd)
a /= a_gcd
while b_gcd != 1:
b_gcd = gcd(b, b_gcd)
b /= b_gcd
print(a, b)
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
1.0 5.0 1.0 1.0 1.0 3.0 1.0 3.0 9.0 5.0 9.0 5.0
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a /= ab_gcd
b /= ab_gcd
#print(a, b)
a_gcd , b_gcd = ab_gcd, ab_gcd
while a_gcd != 1:
a_gcd = gcd(a, a_gcd)
a /= a_gcd
while b_gcd != 1:
b_gcd = gcd(b, b_gcd)
b /= b_gcd
print(a, b)
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
1.0 1.0 1.0 3.0 9.0 5.0
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a /= ab_gcd
b /= ab_gcd
#print(a, b)
a_gcd , b_gcd = ab_gcd, ab_gcd
while a_gcd != 1:
a_gcd = gcd(a, a_gcd)
a /= a_gcd
while b_gcd != 1:
b_gcd = gcd(b, b_gcd)
b /= b_gcd
print(a, b)
if
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a /= ab_gcd
b /= ab_gcd
#print(a, b)
a_gcd , b_gcd = ab_gcd, ab_gcd
while a_gcd != 1:
a_gcd = gcd(a, a_gcd)
a /= a_gcd
while b_gcd != 1:
b_gcd = gcd(b, b_gcd)
b /= b_gcd
print(a, b)
if a == 1 and b == 1 :
count += 1
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a /= ab_gcd
b /= ab_gcd
a_gcd , b_gcd = ab_gcd, ab_gcd
while a_gcd != 1:
a_gcd = gcd(a, a_gcd)
a /= a_gcd
while b_gcd != 1:
b_gcd = gcd(b, b_gcd)
b /= b_gcd
if a == 1 and b == 1 :
count += 1
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a /= ab_gcd
b /= ab_gcd
a_gcd , b_gcd = ab_gcd, ab_gcd
while a_gcd != 1:
a_gcd = gcd(a, a_gcd)
a /= a_gcd
while b_gcd != 1:
b_gcd = gcd(b, b_gcd)
b /= b_gcd
if a == 1 and b == 1 :
count += 1
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
def solution(A, B):
# write your code in Python 3.6
count = 0
for (a, b) in zip(A, B):
ab_gcd = gcd(max(a,b), min(a,b))
a /= ab_gcd
b /= ab_gcd
a_gcd , b_gcd = ab_gcd, ab_gcd
while a_gcd != 1:
a_gcd = gcd(a, a_gcd)
a /= a_gcd
while b_gcd != 1:
b_gcd = gcd(b, b_gcd)
b /= b_gcd
if a == 1 and b == 1 :
count += 1
return count
def gcd(N, M):
if M == 0:
return N
return gcd(M, N % M)
The solution obtained perfect score.