真分數序列

2021-07-25 22:24:54 字數 1173 閱讀 7521

試統計分母在指定區間[a,b]的最簡真分數(分子小與分母,且分子分母無公因數)共有多少個,並求這些最簡真分數公升序序列的第k項;

1.設計要點:

(1)、設定陣列c(k)、d(k)分別儲存第k個最簡真分數的分子與分母;

(2)、設定列舉迴圈;

設定j(a~b)迴圈,列舉指定範圍[a,b]內分數i/j的分母;

設定i(1~j-1)迴圈,列舉對每乙個分母j的分數的分子;

(3)、忽略非最簡i/j;

若分子i與分母j存在大於1的公因數,說明i/j非最簡,可以忽略(因約簡後分母小於j,或前面以產生並賦值,或約簡後分母小於a);

若分子i與分母j不存在大於1的公因數,則賦值得乙個最簡真分數c(n)/d(n),陣列下標n統計最簡真分數的個數;

(4)、逐項比較排序;

應用逐項比較法排序,比較分數式c[i]/d[i]>c[j]/d[j]可轉換為以下整式;

通過整數實施比較是可行的;

逐項比較排序至第k項即可列印輸出c(k)/d(k);

2.求最簡真分數公升序列程式設計:

#includeint main()

if(t==0)

}if(k>n)

return;

for(i=1;i<=k;i++) /*應用逐項比較法排序至第k項*/

for(j=i+1;j<=n;j++)

if(c[i]*d[i]>c[j]*d[i])

printf("分母在[%ld,%ld]中的最簡真分數共有%ld個 \n",a,b,n);

printf("公升序序列中第%ld項為:%ld/%ld \n",k,c[k],d[k]);

}

3.程式執行示例及其注意事項:

分母在[a,b]中,請依次輸入a,b:100,200

請輸入指定項序號k:2017

分母在[100,200]中的最簡真分數共有9228個

公升序序列中第148項為:37/169

以上設計中的逐項比較排序簡易可行,而且只需要排序到第k項即可,不必對所有分數都進行排序;

有關排序的演算法很多,當排序項數量不是非常大時,選擇一種簡易排序演算法即可,不必刻意追求快速排序法;

最簡真分數

題目描述 給出n個正整數,任取兩個數分別作為分子和分母組成最簡真分數,程式設計求共有幾個這樣的組合。輸入描述 每組包含n n 600 和n個不同的整數,整數大於1且小於等於1000。輸出描述 每行輸出最簡真分數組合的個數。示例1輸入 73 5 7 9 11 13 15 32 4 50輸出 172題目...

最簡真分數

統計分母在指定區間 a,b 的最簡真分數 分子小於分母,且分子分母無公因數 共有多少個,並求這些最簡真分數的和 保留5位小數 每行2個整數,分別表示a和b 每行2個整數,分別表示最簡真分數的個數和最簡真分數的和 3 20 126 63.00000這個題目,沒有給定資料的範圍,推測可能資料量不大,一般...

最簡真分數 1199

題目描述 給出 n 個正整數,任取兩個數分別作為分子和分母組成最簡真分數,程式設計求共有幾個這樣的組合。輸入描述 有多組測試資料,每組測試資料有兩行。第一行為乙個整數 n n 600 在第二行中有 n 個以空格分隔的不同的整數 大於等於 1 且小於等於 10,000 當 n 0 時,程式結束,不需要...