栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言实现“幸运数”的实例详解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言实现“幸运数”的实例详解

C语言实现“幸运数”的实例详解

1、题目:

标题:幸运数

幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。 首先从1开始写出自然数1,2,3,4,5,6,…. 1 就是第一个幸运数。 我们从2这个数开始。把所有序号能被2整除的项删除,变为: 1 _ 3 _ 5 _ 7 _ 9 …. 把它们缩紧,重新记序,为: 1 3 5 7 9 …. 。这时,3为第2个幸运数,然后把所有能被3整除的序号位置的数删去。注意,是序号位置,不是那个数本身能否被3整除!! 删除的应该是5,11, 17, … 此时7为第3个幸运数,然后再删去序号位置能被7整除的(19,39,…) 最后剩下的序列类似: 1, 3, 7, 9, 13, 15, 21, 25, 31, 33, 37, 43, 49, 51, 63, 67, 69, 73, 75, 79, … 本题要求: 输入两个正整数m n, 用空格分开 (m < n < 1000*1000) 程序输出 位于m和n之间的幸运数的个数(不包含m和n)。 例如: 用户输入: 1 20 程序输出: 5 例如: 用户输入: 30 69 程序输出: 8

资源约定: 峰值内存消耗(含虚拟机) < 64M CPU消耗 < 2000ms

2、代码实现:


# include
# define MAX 50000

int create_luck(int * );
int num_luck(int *,int,int,int);

int main(void)
{
  int luck[MAX] = {0};
  int max,n,i;
  int num1,num2;

  max = create_luck(luck);
  scanf("%d%d",&num1,&num2);
  n = num_luck(luck,max,num1,num2);
  printf("%dn",n);
  
  return 0;
}

int create_luck(int * luck)
{
  
  int i,j;
  int point_pre=1;
  int point_max=MAX;

  
  for(i=0;i= num2)
      break;
    else if(luck[i] > num1)
      n++;
  }

  return n;
}

3、运行情况:

以上就是C语言实现“幸运数”的实例,这种小算法还有需要改进,这里提供简单实例,如果大家有疑问可以留言,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/63472.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号