愛因斯坦出了一道這樣的數學題:有一條長階梯,若每步跨2階,則最最後剩一階,若每步跨3 階,則最後剩2階,若每步跨5階,則最後剩4階,若每步跨6階則最後剩5階。只有每次跨7階,最後才正好一階不剩。請問這條階梯共有多少階?
*問題分析與算法設計
根據題意,階梯數滿足下面一組同余式:
x≡1 (mod2)
x≡2 (mod3)
x≡4 (mod5)
x≡5 (mod6)
x≡0 (mod7)
*程序說明與注釋
#include<stdio.h>
int main()
{
int i=1; /*i為所設的階梯數*/
while(!((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0)))
++i; /*滿足一組同余式的判別*/
printf("Staris_number=%d\n",i);
}
*運行結果
Staris_number=119
*問題的進一步討論
此題算法還可考慮求1、2、4、5的最小公倍數n,然後判t(t為n-1)≡0(mod7)是否成立,若不成立則t=t+n,再進行判別,直至選出滿足條件的t值。請自行編寫程序實現
*