个人算法笔记(判断有限小数和循环小数)

您所在的位置:网站首页 编程无限循环 个人算法笔记(判断有限小数和循环小数)

个人算法笔记(判断有限小数和循环小数)

#个人算法笔记(判断有限小数和循环小数)| 来源: 网络整理| 查看: 265

仅记录作业过程遇到的值得一记的问题

题干

在这里插入图片描述

解题思路

将笔算中竖式除法的每一步分解还原。 基本流程为:m/n得商和余数,再将余数乘以10,作为下一次的除法中的被除数,除以n,以此循环。根据数学知识可知,两整数之商,如果除不尽,将必为有限小数或无限循环小数。所以退出循环的条件某一次除法后为余数为0或者余数循环。 以3/5为例。

步骤Value13/5=0……3230/5=6……0

此时余数为0,退出循环,0.6为其解,3/5结果是有限小数。 以1/7为例子

步骤Value11/7=0……1210/7=1……3330/7=4……2420/7=2……6560/7=8……4640/7=5……5750/7=7……1

此时余数与第一位余数相同,且余数开始循环,则循环节为(142857).

代码 #include #define N 1000 int main() { int i, j, k, start, end; int m, n; int div[N], mod[N]; int flag = 0; scanf("%d %d", &m, &n); div[0] = m / n; mod[0] = m % n; i = 0; while (flag == 0) { i += 1; div[i] = mod[i - 1] * 10 / n; mod[i] = mod[i - 1] * 10 % n; if (mod[i] == 0) { flag = 1; start = 1; end = i; } else { for (j = 1; j flag = 2; start = j; end = i; } } } } if (flag == 1) { printf("%d.", div[0]); for (k = start; k printf("("); for (k = start; k


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3