您現在的位置是:首頁 > 舞蹈首頁舞蹈

分數化為小數(包含有限小數,純、混無限迴圈小數)

由 滴水穿石hgn 發表于 舞蹈2021-07-24
簡介n中既有因數2或5又有其它因數,把它化成小數將是一個混無限迴圈小數:其中不迴圈部分的位數,等於其因數2或5中最多的個數

二分之一等於小數等於多少

一、對大於1的自然數n,將其倒數1/n化成小數有三種類型:

n的因數中只含有2或5,其結果必然是有限小數,且小數位數等於其因數2或5中最多的個數,例如:1/40=0。025,有3位小數,而40=2^3*5,其中含有3個因數2;

如果n中不含因數2或5,把它化成小數將是一個純無限迴圈小數,這種情況前面已經介紹過;

n中既有因數2或5又有其它因數,把它化成小數將是一個混無限迴圈小數:其中不迴圈部分的位數,等於其因數2或5中最多的個數;迴圈節的位數只由2或5以外的因數決定,例如:1/56=0。017’857142’,其中不迴圈部分有3位小數,迴圈節是6位,而56=2^3*7,其中含有3個因數2和一個因數7,我們已經知道7的倒數的迴圈節位數也是6位。

二、用C語言程式設計把單位分數化為小數:

//分數化小數(包含:有限小數 純無限迴圈小數 混無限迴圈小數)

#include

int main ()

{ int i,b,y,y1,w;//迴圈變數i,被除數b,餘數y,迴圈節位數w,

int m,n; //範圍[m,n],(其中m,n均為自然數,且2<=m<=n)

printf(“請輸入自然數範圍m n(用空格隔開):”); scanf(“%d %d”,&m,&n);

if(m<=1) m=2; //排除0和1的倒數

for(i=m;i<=n;i++)

{ y=i;w=0; //i給餘數y;含因數2或5的最多個數w置0

while(y%10==0){ y/=10; w++; } //y能被幾個10整除

while(y%2==0) { y/=2; w++; } //y能被幾個2整除

while(y%5==0) { y/=5; w++; } //y能被幾個5整除

printf(“1/%d=0。”,i);

y=1; //餘數(被除數)置1

while(w!=0) //當含2或5的個數不是0時反覆除:

{ y*=10; //餘數後補0

printf(“%d”,y/i); //輸出一位商(不迴圈部分)

y%=i; w——; //求新餘數,個數減1

}

if(y==0) {printf(“\n”);continue;} //若是有限小數,看下一個i

printf(“‘”); //’為迴圈部分開始標記,用單引號‘ ’裡面表示一個迴圈節

b=y*10; y1=y; //先把餘數*10傳給b(保證下面的迴圈能進行);把迴圈開始前的餘數傳給y1

while(b!=y1) //當餘數=迴圈開始時的餘數時跳出

{ y*=10;w++; //餘數*10變為被除數,累計迴圈部分位數

printf(“%d”,y/i); //輸出一位商(迴圈部分)

y%=i; b=y; //求新餘數,餘數y傳給除數b

}

printf(“‘,其迴圈節有%d位\n”,w); //’為迴圈部分結束標記,輸出迴圈節位數w

}

}

三、單位分數化小數執行結果展示:

分數化為小數(包含有限小數,純、混無限迴圈小數)