求幸运数C/C++代码?

幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。首先从1开始写出自然数1,2,3,4,5,6,....1就是第一个幸运数。我们从2这个数开始。把所有序... 幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。

首先从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
展开
 我来答
匿名用户
2014-12-31
展开全部
static void isPrime(int start, int a[], int len)
{
int k = start, num = a[start];
for (int i = k; i < len; i++)
{
if (i%num != 0) a[k++] = a[i];
}
if (num < len)isPrime(start + 1, a, k);
}
int    main()
{
int len = 100,kinds=0,a[100];
int  n=20,m=1;
cin>> m >> n ;
for (int i = 1; i < len; i++) a[i] = 2 * i - 1;
isPrime(2, a, len);
for (int i = 1; i<len; i++)
{
if (a[i]>m && a[i] < n)  kinds++;
if (a[i] >= n) break;
}
cout << kinds << endl;
return  0;
}
匿名用户
2014-12-28
展开全部
分段打表。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式