


from __future__ import annotations

import random







class lowerCAmelCase_		:

 '''simple docstring'''

 __snake_case				=    6



 def __init__(      self   ):
       snake_case_			= list(range(1						, Dice.NUM_SIDES + 1   )   )





 def 		UpperCamelCase__	(      self   ):
       return random.choice(self.sides   )






def 			__lowerCAmelCase       (SCREAMING_SNAKE_CASE   ,   SCREAMING_SNAKE_CASE = 2   )->    list[float]:




      """simple docstring"""

      snake_case_			= [Dice() for i in range(SCREAMING_SNAKE_CASE   )]
      snake_case_			= [0] * (len(SCREAMING_SNAKE_CASE   ) * Dice.NUM_SIDES + 1)
      for _ in range(SCREAMING_SNAKE_CASE   ):
            count_of_sum[sum(dice.roll() for dice in dices   )] += 1
      snake_case_			= [round((count * 100) / num_throws   ,   2   ) for count in count_of_sum]
      return probability[num_dice:]  # remove probability of sums that never appear


if __name__ == "__main__":
   import doctest

   doctest.testmod()



def 			__lowerCAmelCase       (SCREAMING_SNAKE_CASE   )->    list:




      """simple docstring"""

      snake_case_			= [True for i in range(n + 1   )]
      snake_case_			= [i - 1 for i in range(n + 1   )]
      snake_case_			= []
      for i in range(2   ,   n + 1   ):
            if is_prime[i]:
                  primes.append(SCREAMING_SNAKE_CASE   )
            for j in range(0   ,   len(SCREAMING_SNAKE_CASE   )   ):
                  if i * primes[j] >= n:
                        break
                  snake_case_			= False

                  if i % primes[j] == 0:
                        snake_case_			= totients[i] * primes[j]
                        break

                  snake_case_			= totients[i] * (primes[j] - 1)

      return totients


if __name__ == "__main__":
   import doctest

   doctest.testmod()