①若一個分數的分子為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));
}
}