19世纪爱因斯坦曾经提出过这样一道有趣的数学题:
有一个长阶梯,若每步上2阶,最后剩下1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩下4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。请问该阶梯至少有多少阶。
来分析一下爱因斯坦的阶梯问题。假设阶梯的个数为minNumber,按照前述的条件,minNumber应该满足如下条件:minNumber除以2的余数为1;minNumber除以3的余数为2;minNumber除以5的余数为4;minNumber除以6的余数为5;minNumber除以7的余数为0;很明显这个数是7的倍数,所以,从7开始,对每个7的倍数进行判断,直到寻找到一个最小的满足条件的数据为止。这个问题可以用计算机来解决。
程序说明与注释
#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
",i);
}
*运行结果
Staris_number=119