@gen.coroutine
  def SharePhotos(self, client, sharer_id, viewpoint_id, photo_ids, follower_ids):
    photo_keys = [DBKey(photo_id, None) for photo_id in photo_ids]
    photos = yield gen.Task(Photo.BatchQuery, client, photo_keys, None)

    acc = Accounting()
    acc.IncrementFromPhotos(photos)

    # Viewpoint visible_to for viewpoint.
    self.GetViewpointVisibleTo(viewpoint_id).IncrementStatsFrom(acc)

    if sharer_id in follower_ids:
      # Viewpoint shared_by for sharer.
      self.GetViewpointSharedBy(viewpoint_id, sharer_id).IncrementStatsFrom(acc)

      # User shared_by for sharer.
      self.GetUserSharedBy(sharer_id).IncrementStatsFrom(acc)

    # Viewpoint visible_to for followers.
    for follower_id in follower_ids:
      self.GetUserVisibleTo(follower_id).IncrementStatsFrom(acc)
Returns a tuple of two different primes of nbits bits
dataset/ETHPy150Open viewfinderco/viewfinder/backend/db/accounting.py/AccountingAccumulator.SharePhotos--crossover with--dataset/ETHPy150Open CouchPotato/CouchPotatoServer/libs/rsa/_version133.py/find_p_q