FeimiL


私信TA

用户名:feimil

访问量:1545

签 名:

等  级
排  名 14816
经  验 864
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校 滁州学院
专  业

  自我简介:

TA的其他文章

参考代码:

#include<stdio.h>


int main()


{

int m,n;//定义变量m,n分别为左右端点 

scanf("%d %d",&m,&n);//首次输入端点的值以确定下面要定义的数组的大小 

int a[n],sum=0;//定义数组a[n],n值已在上一步已经确定。sum为区间(m,n)之间的幸运数个数 

for(int i=0;i<=n;++i) a[i]=i;//依次给数组赋予与下标相等的数(亦可全部为1,不为0即可) 

for(int i=2;i<n;)//循环剔除非幸运数(将对应的数组值清空,变为0) ,其中i为幸运数 

{

int k=i;//定义一个变量k等于循环初始的i值 

int x=0;//x为计数器,判断幸运数 

for(int j=0;j<=n;++j) //循环剔除非零数组中位数能被幸运数i整除的数 

{

if(a[j]!=0) x++;//当数组元素不为0时计数器x加一(为零表示已被剔除) 

if(x==i)//如果计数器与幸运数相等即该位数组元素位数能够被幸运数i整除,剔除并将计数器x归零 

{

a[j]=0;//清除 

x=0;//计数器归零 

}

}

for(int j=i+1;j<n;++j) if(a[j]!=0)//判断新产生的幸运数i,即当前幸运数的下一个非零数组元素 

{

i=j;//令i等于新产生的幸运数 

break;//跳出循环防止幸运数后移 

}

if(i==k) break;//如果新产生的i与原来的i(K)相等,则表示程序陷入死循环,强制跳出循环 

}

for(int i=m+1;i<n;++i) if(a[i]!=0) sum++;//当剔除完成后继续循环找出区间(m,n)之间的幸运数个数 

printf("%d",sum);//输出结果 

return 0;//程序结束 

}


 

0.0分

0 人评分

  评论区

  • «
  • »