①若一个分数的分子为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));
}
}