【C語言教學手冊(四版)-練習題解答】
第8章
8.3 撰寫第一個 C 程式語言-孫子算經
在《孫子算經》裡(共三卷,據推測約成書於西元400年左右),下卷的第26題,就是鼎鼎有名的「孫子問題」
今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問物幾何?
將它翻譯成白話:這裡有一堆東西,不知道有幾個;三個三個去數它們,剩餘二個;五個五個去數它們,剩餘三個;七個七個去數它們,剩餘二個;問這堆東西有幾個?精簡一點來說:有一個數,用 3 除之餘 2;用 5 除之餘 3;用 7 除之餘 2;試求此數。
(a) 試找出滿足孫子問題裡的最小整數.
(b) 試撰寫一函數 int fund(int n), 可以傳回滿足孫子問題裡的第 n 個整數, 然後利用此函數找出滿足孫子問題的第 5個與第 7個整數.
(c) 試利用 (b) 所定義的函數找出前 12個滿足孫子問題的整數.
(a)
#include <stdio.h>
int find(int);
int main()
{
int i=0;
do
{
i++;
}
while( !find(i) );
printf("%d\n",i);
}
int find(int n)
{
if((n%3==2) && (n%5==3) && (n%7==2))
return 1;
return 0;
}
(b)
#include <stdio.h>
int find(int n);
int main()
{
int n;
printf("find(5)=%d\n",find(5));
printf("find(7)=%d\n",find(7));
}
int find(n)
{
int a=0, i=0;
while(i<n)
{
a+=1;
if((a%3==2) && (a%5==3) && (a%7==2))
i+=1;
}
return a;
}
(c)
#include <stdio.h>
int find(int n);
int main()
{
int i;
for(i=1;i<=12;i++)
printf("find(%d)=%d\n",i,find(i));
}
int find(n)
{
int a=0, i=0;
while(i<n)
{
a+=1;
if((a%3==2) && (a%5==3) && (a%7==2))
i+=1 ;
}
return a ;
}
(不好意思小宣傳一下我的繪圖 希望大家喜歡)
\\♥
謝謝大家:))
ps
p新的貼圖終於出來了💜
💜
💜
可愛的海苔貓-第三代
海苔貓繪圖作品\\
希望大家支持~~