import%20marimo%0A%0A__generated_with%20%3D%20%220.15.3%22%0Aapp%20%3D%20marimo.App()%0A%0Awith%20app.setup%3A%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20pandas%20as%20pd%0A%0A%0A%40app.class_definition%0Aclass%20Person%3A%0A%20%20%20%20%22%22%22Represents%20a%20participant%20in%20the%20Diffie-Hellman%20key%20exchange%20protocol.%22%22%22%0A%0A%20%20%20%20def%20__init__(self%2C%20n)%3A%0A%20%20%20%20%20%20%20%20%22%22%22Initialize%20a%20person%20with%20a%20random%20secret%20number.%0A%0A%20%20%20%20%20%20%20%20Args%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20n%3A%20Upper%20bound%20for%20the%20random%20secret%20(exclusive)%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20self.__secret%20%3D%20np.random.choice(np.arange(1%2C%20n))%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20Person(5)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20Person(5)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20np.random.choice(5)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20np.random.choice(np.arange(1%2C%205))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20%23%20Pick%20a%20prime%20number%0A%20%20%20%20p%20%3D%207%0A%20%20%20%20return%20(p%2C)%0A%0A%0A%40app.cell%0Adef%20_(p)%3A%0A%20%20%20%20index%20%3D%20np.arange(0%2C%20p%20%2B%201)%0A%20%20%20%20a%20%3D%20pd.DataFrame(index%3Dindex%2C%20data%3D3%2C%20columns%3D%5B%22n%22%5D)%0A%20%20%20%20a%0A%20%20%20%20return%20(a%2C)%0A%0A%0A%40app.cell%0Adef%20_(a)%3A%0A%20%20%20%20a%5B%22power%22%5D%20%3D%20a.index%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(a)%3A%0A%20%20%20%20a%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(a)%3A%0A%20%20%20%20a%5B%22n%5Epower%22%5D%20%3D%20np.power(a%5B%22n%22%5D%2C%20a%5B%22power%22%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(a)%3A%0A%20%20%20%20a%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(a)%3A%0A%20%20%20%20a%5B%22n%5Epower%20mod%20power%22%5D%20%3D%20np.mod(a%5B%22n%5Epower%22%5D%2C%207)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(a)%3A%0A%20%20%20%20a%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
f543400515ebdd5bb2cc46a3d654160c8cbdf8f1c8df32c07339debda732ef94