輸入一個小於1的正小數,分別輸出最簡分數的分子和分母。
此代碼的目的是簡單快速的求出有限位小數對應的最簡真分數。
C語言代碼如下:
# include <stdio.h> # include <string.h> // 判斷兩個整數的最大公約數是否為1 int is_prime(int a, int b) { while (a != b) { a>b?(a-=b):(b-=a); } return b; } int main(void) { char ch[50]; int a=0, b=1; int i = 0, flag=0,temp; gets(ch); // 讀取尾數長度 while (ch[i]) { if (flag == 1) { a += (ch[i]-'0'); a *= 10; b *= 10; } if (flag==0 && ch[i]=='.') flag = 1; i++; } a /= 10; temp = is_prime(a,b); while (1 != temp) { a /= temp; b /= temp; temp = is_prime(a,b); } printf("%d %d\n",a,b); return 0; }