如果M/N是无限循环小数,编写程序求一个分数M/N(0<M<N<=100)的循环数(无限循环的数字串),例如:5/7的循环数是714285。
时间: 2024-05-16 20:12:59 浏览: 10
可以使用长除法来求解一个分数的循环数。假设我们要求解分数 a/b 的循环数,我们可以按照以下的步骤进行:
1. 将 a/b 进行长除法,得到商和余数。
2. 将余数乘以 10,再除以 b,得到一个新的商和余数。
3. 如果余数已经出现过了,则说明出现了循环。在商的位置上添加括号,标明循环的数字串。如果余数为 0,则说明分数是有限小数,没有循环数。
4. 如果余数没有出现过,则继续进行步骤 2。
以下是 Python 代码实现:
```python
def find_cycle(a, b):
remainder_dict = {}
quotient, remainder = divmod(a, b)
cycle = ''
while remainder != 0 and remainder not in remainder_dict:
remainder_dict[remainder] = len(cycle)
quotient, remainder = divmod(remainder * 10, b)
cycle += str(quotient)
if remainder == 0:
return cycle
else:
return cycle[:remainder_dict[remainder]] + '(' + cycle[remainder_dict[remainder]:] + ')'
```
使用该函数可以求解任意分数的循环数,例如:
```python
>>> find_cycle(5, 7)
'142857'
>>> find_cycle(1, 3)
'3'
>>> find_cycle(22, 99)
'24(24)'
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)