问题:在你面前有一条长长的阶梯。如果你每步跨2阶,那么最后剩下1阶;如果你每步跨3阶,那么最后剩2阶;如果你每步跨5阶,那么最后剩4阶;如果你每步跨6阶,那么最后剩5阶;只有当你每步跨7 阶时,最后才正好走完,一阶也不剩。请问这条阶梯至少有多少阶?
分析:所求的阶梯数应比 2、3、5、6 的公倍数(即 30 的倍数)小 1,并且是 7 的倍数。因此只需从 29、59、89、119、……中找7 的倍数就可以了。可以得到答案为 119 阶
c代码实现如下:
#include<stdio.h>
main()
{
int num=7;
while(1)
{
if(num%21&&num%32&&num%54&&num%65&&num%70)break;
else ++num;
}
printf(“爱因斯坦的阶梯数为:%dn”,num);
}
注:上面的&&不能理解为||实现,&&是和的意思,||为或的意思。||时即其中有一个条件成立,表达式就成立,运行的结果为7。
也可将上面的代码改为如下代码实现:
#include<stdio.h>
main()
{
int num=7;
while((num%2
1&&num%32&&num%54&&num%65&&num%70))
{
num+=7;
}
printf(“爱因斯坦的阶梯数为:%dn”,num);
}
这样代码更精炼。直接将条件放到while循环条件语句里。