一、對大于1的自然數n,将其倒數1/n化成小數有三種類型:
二、用C語言編程把單位分數化為小數:
//分數化小數(包含:有限小數 純無限循環小數 混無限循環小數)
#include <stdio.h>
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==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
}
}
三、單位分數化小數運行結果展示:
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!