試統計分母在指定區間[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 時,程式結束,不需要...