爱因斯坦的数学题

发布时间 2023-04-26 16:57:15作者: Mini-Q

自然语言解决问题:

该问题要求输入N值,求解出在 1-N 的范围内存在多少个满足要求的阶梯数。在算法设计中,我们使用 while 循环以允许重复读入多个N值,直到遇到文件结束符 EOF 才结束输入。
对每一次读入的N值,都要判断在 1-N的范围内存在的满足要求的阶梯数个数。判断时可采用 for 循环,循环变量设为 i,由题意,i的初值从7开始取即可,for 循环的循环条件为<N。for 语句的循环体中使用问题分析中列出的 5个条件来检验每一个i值,能够满足所有 5个条件的值即为所求的阶梯数。

流程图:

 

具体代码:

#include<stdio.h>
int main(){

long n,sum,i;
while(scanf("%ld",&n)!=EOF){
printf("在1-ld之间的阶梯数为:\n",n);
sum=0;
for(i=7;i<=n;i++)
if(i%7==0)
if(i%6==5)
if(i%5==4)
if(i%3==2)
{
sum++;
printf("%ld\n",i);
}
printf("在1-%ld之间,有%ld个数可以满足爱因斯坦对阶梯的要求.\n",n,sum);
return 0;
}
}