个人算法笔记(判断有限小数和循环小数) |
您所在的位置:网站首页 › 编程无限循环 › 个人算法笔记(判断有限小数和循环小数) |
仅记录作业过程遇到的值得一记的问题 题干 解题思路将笔算中竖式除法的每一步分解还原。 基本流程为: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 |