tft每日頭條

 > 生活

 > 有限小數或無限循環小數化為分數

有限小數或無限循環小數化為分數

生活 更新时间:2024-12-25 13:03:23

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

  1. n的因數中隻含有2或5,其結果必然是有限小數,且小數位數等于其因數2或5中最多的個數,例如:1/40=0.025,有3位小數,而40=2^3*5,其中含有3個因數2;
  2. 如果n中不含因數2或5,把它化成小數将是一個純無限循環小數,這種情況前面已經介紹過;
  3. 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 <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

}

}

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

有限小數或無限循環小數化為分數(分數化為小數包含有限小數)1

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved