
"""simple docstring"""





from manim import *
class 						SCREAMING_SNAKE_CASE_ (						__a ):




		"""simple docstring"""





		def 	snake_case_     (     self):
				__SCREAMING_SNAKE_CASE            = Rectangle(height=0.5							,  width=0.5)
				__SCREAMING_SNAKE_CASE            = Rectangle(height=0.46							,  width=0.46).set_stroke(width=0)

				__SCREAMING_SNAKE_CASE            = [mem.copy() for i in range(6)]
				__SCREAMING_SNAKE_CASE            = [mem.copy() for i in range(6)]
				__SCREAMING_SNAKE_CASE            = VGroup(*lowerCAmelCase__).arrange(lowerCAmelCase__							,  buff=0)
				__SCREAMING_SNAKE_CASE            = VGroup(*lowerCAmelCase__).arrange(lowerCAmelCase__							,  buff=0)
				__SCREAMING_SNAKE_CASE            = VGroup(lowerCAmelCase__							,  lowerCAmelCase__).arrange(lowerCAmelCase__							,  buff=0)
				__SCREAMING_SNAKE_CASE            = Text("""CPU"""							,  font_size=2_4)
				__SCREAMING_SNAKE_CASE            = Group(lowerCAmelCase__							,  lowerCAmelCase__).arrange(lowerCAmelCase__							,  buff=0.5							,  aligned_edge=lowerCAmelCase__)
				cpu.move_to([-2.5, -0.5, 0])
				self.add(lowerCAmelCase__)

				__SCREAMING_SNAKE_CASE            = [mem.copy() for i in range(1)]
				__SCREAMING_SNAKE_CASE            = VGroup(*lowerCAmelCase__).arrange(lowerCAmelCase__							,  buff=0)
				__SCREAMING_SNAKE_CASE            = Text("""GPU"""							,  font_size=2_4)
				__SCREAMING_SNAKE_CASE            = Group(lowerCAmelCase__							,  lowerCAmelCase__).arrange(lowerCAmelCase__							,  buff=0.5							,  aligned_edge=lowerCAmelCase__)
				gpu.align_to(lowerCAmelCase__							,  lowerCAmelCase__)
				gpu.set_x(gpu.get_x() - 1)

				self.add(lowerCAmelCase__)

				__SCREAMING_SNAKE_CASE            = [mem.copy() for i in range(6)]
				__SCREAMING_SNAKE_CASE            = VGroup(*lowerCAmelCase__).arrange(lowerCAmelCase__							,  buff=0)

				__SCREAMING_SNAKE_CASE            = Text("""Model"""							,  font_size=2_4)
				__SCREAMING_SNAKE_CASE            = Group(lowerCAmelCase__							,  lowerCAmelCase__).arrange(lowerCAmelCase__							,  buff=0.5							,  aligned_edge=lowerCAmelCase__)
				model.move_to([3, -1.0, 0])

				self.play(
				    Create(lowerCAmelCase__							,  run_time=1)							,  Create(lowerCAmelCase__							,  run_time=1)							,  Create(lowerCAmelCase__							,  run_time=1)							,  )

				__SCREAMING_SNAKE_CASE            = MarkupText(
				    f"First, an empty model skeleton is loaded\ninto <span fgcolor='{YELLOW}'>memory</span> without using much RAM."							,  font_size=2_4							,  )

				__SCREAMING_SNAKE_CASE            = Square(side_length=2.2)
				key.move_to([-5, 2, 0])

				__SCREAMING_SNAKE_CASE            = MarkupText(
				    f"<b>Key:</b>\n\n<span fgcolor='{YELLOW}'>●</span> Empty Model"							,  font_size=1_8							,  )

				key_text.move_to([-5, 2.4, 0])

				step_a.move_to([2, 2, 0])
				self.play(Write(lowerCAmelCase__							,  run_time=2.5)							,  Write(lowerCAmelCase__)							,  Write(lowerCAmelCase__))

				self.add(lowerCAmelCase__)

				__SCREAMING_SNAKE_CASE            = []
				__SCREAMING_SNAKE_CASE            = []
				__SCREAMING_SNAKE_CASE            = []
				for i, rect in enumerate(lowerCAmelCase__):
						__SCREAMING_SNAKE_CASE            = Rectangle(height=0.46							,  width=0.46).set_stroke(width=0.0).set_fill(lowerCAmelCase__							,  opacity=0.7)
						cpu_target.move_to(lowerCAmelCase__)
						cpu_target.generate_target()
						__SCREAMING_SNAKE_CASE            = 0.46 / 4
						__SCREAMING_SNAKE_CASE            = 0.46 / 3

						if i == 0:
								cpu_target.target.next_to(cpu_left_col_base[0].get_corner(DOWN + LEFT)							,  buff=0.02							,  direction=lowerCAmelCase__)
								cpu_target.target.set_x(cpu_target.target.get_x() + 0.1)
						elif i == 3:
								cpu_target.target.next_to(cpu_targs[0].target							,  direction=lowerCAmelCase__							,  buff=0.0)
						else:
								cpu_target.target.next_to(cpu_targs[i - 1].target							,  direction=lowerCAmelCase__							,  buff=0.0)
						cpu_targs.append(lowerCAmelCase__)

						first_animations.append(rect.animate(run_time=0.5).set_stroke(lowerCAmelCase__))
						second_animations.append(MoveToTarget(lowerCAmelCase__							,  run_time=1.5))

				self.play(*lowerCAmelCase__)
				self.play(*lowerCAmelCase__)

				self.wait()





'''simple docstring'''




import math
import unittest




def 							lowerCamelCase	(      UpperCAmelCase__       :					int )			->      bool:
							assert isinstance(UpperCAmelCase__      ,      UpperCAmelCase__ ) and (
							    number >= 0
							), "'number' must been an int and positive"

							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(UpperCAmelCase__ ) + 1 )      ,      6 ):
														if number % i == 0 or number % (i + 2) == 0:
																					return False
							return True





class     __magic_name__						(    unittest.TestCase):







			def 	SCREAMING_SNAKE_CASE_     (	self				:  Dict    ):
										self.assertTrue(is_prime(2    )    )
										self.assertTrue(is_prime(3    )    )
										self.assertTrue(is_prime(5    )    )
										self.assertTrue(is_prime(7    )    )
										self.assertTrue(is_prime(11    )    )
										self.assertTrue(is_prime(13    )    )
										self.assertTrue(is_prime(17    )    )
										self.assertTrue(is_prime(19    )    )
										self.assertTrue(is_prime(23    )    )
										self.assertTrue(is_prime(29    )    )







			def 	SCREAMING_SNAKE_CASE_     (	self				:  Optional[Any]    ):
										with self.assertRaises(lowercase_    ):
																	is_prime(-19    )
										self.assertFalse(
										    is_prime(0    )				,			"""Zero doesn't have any positive factors, primes must have exactly two."""				,			)
										self.assertFalse(
										    is_prime(1    )				,			"""One only has 1 positive factor, primes must have exactly two."""				,			)
										self.assertFalse(is_prime(2 * 2    )    )
										self.assertFalse(is_prime(2 * 3    )    )
										self.assertFalse(is_prime(3 * 3    )    )
										self.assertFalse(is_prime(3 * 5    )    )
										self.assertFalse(is_prime(3 * 5 * 7    )    )


if __name__ == "__main__":
						unittest.main()





