①若一个分数的分子为1,如1/a=x(x为有限位的小数)
则可把x化为分母为10^n,分子为x×10^n的一个整数,n的取值要看x的小数位是几位
则x×10^n=10^n/a=2^n·5^n/a,我们可知等式左边是个整数,所以右边的分母a定能整除10^n,
即a=2^i·5^j(i,j都大于等于0)时,1/a就为有限小数
反之,若a的因子中还有不是2和5的其他数,则分数1/a为无限循环小数
②若是一个一般的最简分数b/a,若b/a为有限小数,则可认为是b与1/a的乘积
推断过程如①,得出a至少整除10^n与b中的一个,否则b/a不为有限小数
③我觉得无限循环小数又分为循环节为1的和循环节大于1的两类,如:
循环节为1的:0.3333333333......,0.1666666666666666......,0.12344444444......(这里有的不是从小数点后的第一位开始循环的,而是从某一位开始循环,我们也把他认为是循环节为1)
循环节大于1的:0.01010101......,0.142857142857......,0.076923076923......
对于一个最简分数b/a,若其为循环节为1的无限循环小数,则分母a为3或3的整数倍。反之,其循环节大于1
④若给你一个无限循环小数0.m......nm......n.......把其化为小数形式,该怎么化?
其循环节为m......n,设其循环节内有x位数字
设原数0.m......nm......n.......=y
则y×10^x=m......n.m......n......
上面两式相减:y(10^x-1)=m......n,即y=m......n/(10^x-1)
即化为分数形式即为以循环节为分子,分母为999.....9(9的位数与循环节的位数相同)
当然若你想把此分数化为最简形式,却不见得是件容易的事
例如1/7=0.142857142857......=142857/999999
代码一:如何把输出一个数的质因子
public class zhishu { public void separation(int i){ int flag = 0; while(i!=0){ flag = 0; for(int j=2;j<=i;j++){ if(i%j==0){ System.out.print(j+"+"); i = i/j; flag = 1; break; } } if(flag == 0){ System.out.print(i); break; } } } public static void main(String args[]){ zhishu c = new zhishu(); c.separation(121); } }
代码二:判断一个分数能不能转化成有限小数
public class Cycle { public boolean judge(int up , int down){ if(down == 0) { //判断输入,分母不能为0 System.out.println("input Error"); return false; } while(up > down){ //把一个分数化成真分数 up = up-down; } for(int i=2 ; i<=up ; i++){ //分子分母约去最大公因子 if(up%i == 0 && down%i == 0){ up = up/i; down = down/i; } } while(down!=1){ //检查分母是不是只含有2,5两种质因子 if(down%2 == 0){ down = down/2; }else if(down%5 == 0){ down = down/5; }else{ return false; } } return true; } public static void main(String[] args) { Cycle c = new Cycle(); System.out.println(c.judge(10, 15)); } }