Advertisement
manish

product equals sum [partial]

Dec 11th, 2022 (edited)
596
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.08 KB | None | 0 0
  1. from math import log2
  2.  
  3. def Sieve(limit=10**6):
  4.     """Uses Sieve algorithm and stores a factor of each number!
  5.        If isPrime[i] = 1, the number 'i' is prime."""
  6.     isPrime = [1] * (limit + 1)
  7.     isPrime[0] = isPrime[1] = 0
  8.     for i in range(2, limit + 1):
  9.         if isPrime[i] != 1:continue
  10.         for j in range(i * i, limit + 1, i):
  11.             if isPrime[j] == 1:isPrime[j] = i
  12.     return isPrime
  13.  
  14. def get_prime_factors(n, isPrime):
  15.     """Returns prime factorisation of n."""
  16.     if n < 2:
  17.         return []
  18.     result = []
  19.     while isPrime[n] != 1:
  20.         result += [isPrime[n]]
  21.         n //= isPrime[n]
  22.     result += [n]
  23.     return result
  24.  
  25. isPrime = Sieve(10**6)
  26.  
  27. def solve(n):
  28.     if n == 2:
  29.         return 1
  30.     minimumOnes, maximumOnes = n - 1 - int(log2(n)), n - 2
  31.     for ones in range(minimumOnes, maximumOnes + 1):
  32.         remaining = n - ones
  33.         for product in range(n + 1, 2 * n + 1):
  34.             req_sum = product - ones
  35.             factors = get_prime_factors(req_sum, isPrime)
  36.  
  37. for i in range(2, 100000):
  38.     print(i, "->", solve(i))
  39.  
  40.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement