Introduction
The josephian ring is a classic mathematical issue that tests not only the techniques of algorithm design but also the ability to program. This paper will explore in depth the algorithms of the joseph ring issue and will provide several different python realization methods to help readers easily understand the techniques of solving the problem。
Briefing on the joseph round
The question of the joseph ring can be described as: there is a single circle of individuals, counting from the first person to the first person, counting to the first person and then continuing to count from the next person until everyone is out. We need to find the number of the last person left behind。
Overview of solutions
There are two main solutions to the joseph ring problem: simulation and mathematics。
Simulation
Simulations solve problems by modelling the entire outlet process. We can use a list to represent a circle of n-persons and then simulate the process of count and columning through circular and condition judgements。
Math
Mathematics solves problems on the basis of an incremental relationship. By observing the column pattern, we can find a extrapolation formula to calculate the number of the last person left。
Python achieves simulation
(n, k, m):
people = list
index = k-1
> 1:
index = (index + m-1) %len (people)
(f' out: {people [index]}')
people. Pop (index)
turn people [0]
# example
# a total of 13 people, starting with the first number, going from one to three
Mathematics
If you're going to do it, you can do it. Last = 0
for i in range (2, n + 1):
last = (last + m) %i
turn k + last
# example
# a total of 13 people, starting with the first number, going from one to three
Summary
Through the python of these two methods, we can see that the josephian ring problem can be solved not only through simulation of the whole process, but also through mathematical methods. Both approaches have advantages and disadvantages, and the choice of the method depends on the specific application landscape and individual preferences。
In programming practice, understanding and mastery of these algorithms are important for improving programming capacity and solving practical problems. It is hoped that this paper will help readers to understand the algorithm techniques of joseph ring。




