




import math






def 				UpperCAmelCase__  (							_A			):






  """simple docstring"""


  if 1 < number < 4:
    # 2 and 3 are primes
    return True
  elif number < 2 or number % 2 == 0 or number % 3 == 0:
    # Negatives, 0, 1, all even numbers, all multiples of 3 are not primes
    return False

  # All primes number are in format of 6k +/- 1
  for i in range(5      ,      int(math.sqrt(__A			) + 1			)      ,      6			):
    if number % i == 0 or number % (i + 2) == 0:
      return False
  return True






def 				UpperCAmelCase__  (							_A = 600_851_475_143			):






  """simple docstring"""


  try:
    a_		    =  int(__A			)
  except (TypeError, ValueError):
    raise TypeError('''Parameter n must be int or castable to int.'''			)
  if n <= 0:
    raise ValueError('''Parameter n must be greater than or equal to one.'''			)
  a_		    =  0
  if is_prime(__A			):
    return n
  while n % 2 == 0:
    n //= 2
  if is_prime(__A			):
    return n
  for i in range(3      ,      int(math.sqrt(__A			)			) + 1      ,      2			):
    if n % i == 0:
      if is_prime(n // i			):
        a_		    =  n // i
        break
      elif is_prime(__A			):
        a_		    =  i
  return max_number


if __name__ == "__main__":
  print(F"""{solution() = }""")



from typing import Dict, Optional, Tuple

import torch
def   _lowerCAmelCase(						__A      ):
  UpperCAmelCase          =	boundaries[1] - boundaries[0]
  UpperCAmelCase          =	boundaries + step / 2
  UpperCAmelCase          =	torch.cat([bin_centers, (bin_centers[-1] + step).unsqueeze(-1      )] ,							dim=0      )
  return bin_centers
def   _lowerCAmelCase(						__A ,							__A ,							):
  UpperCAmelCase          =	_calculate_bin_centers(__A      )
  return (
      torch.sum(aligned_distance_error_probs * bin_centers ,							dim=-1      ),
      bin_centers[-1],
  )
def   _lowerCAmelCase(						__A ,							__A = 31 ,							__A = 64 ,							**__A ,							):
  UpperCAmelCase          =	torch.linspace(0 ,							__A ,							steps=(no_bins - 1) ,							device=logits.device      )

  UpperCAmelCase          =	torch.nn.functional.softmax(__A ,							dim=-1      )
  UpperCAmelCase   ,						UpperCAmelCase          =	_calculate_expected_aligned_error(
      alignment_confidence_breaks=__A ,							aligned_distance_error_probs=__A ,							)

  return {
      "aligned_confidence_probs": aligned_confidence_probs,
      "predicted_aligned_error": predicted_aligned_error,
      "max_predicted_aligned_error": max_predicted_aligned_error,
  }





def   _lowerCAmelCase(						__A ,							__A = None ,							__A = 31 ,							__A = 64 ,							__A = 1E-8 ,							**__A ,							):
  if residue_weights is None:
    UpperCAmelCase          =	logits.new_ones(logits.shape[-2]      )

  UpperCAmelCase          =	torch.linspace(0 ,							__A ,							steps=(no_bins - 1) ,							device=logits.device      )

  UpperCAmelCase          =	_calculate_bin_centers(__A      )
  torch.sum(__A      )
  UpperCAmelCase          =	logits.shape[-2]
  UpperCAmelCase          =	max(__A ,							19      )

  UpperCAmelCase          =	1.24 * (clipped_n - 15) ** (1.0 / 3) - 1.8

  UpperCAmelCase          =	torch.nn.functional.softmax(__A ,							dim=-1      )

  UpperCAmelCase          =	1.0 / (1 + (bin_centers**2) / (da**2))
  UpperCAmelCase          =	torch.sum(probs * tm_per_bin ,							dim=-1      )

  UpperCAmelCase          =	residue_weights / (eps + residue_weights.sum())
  UpperCAmelCase          =	torch.sum(predicted_tm_term * normed_residue_mask ,							dim=-1      )

  UpperCAmelCase          =	per_alignment * residue_weights

  UpperCAmelCase          =	(weighted == torch.max(__A      )).nonzero()[0]
  return per_alignment[tuple(__A      )]



