早教吧 育儿知识 作业答案 考试题库 百科 知识分享

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

题目详情
求幸运数C/C++代码?
幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的“筛法”生成.
首先从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
▼优质解答
答案和解析
static void isPrime(int start, int a[], int len)
{
\x09int k = start, num = a[start];
\x09for (int i = k; i < len; i++)
\x09{
\x09\x09if (i%num != 0) a[k++] = a[i];
\x09}
\x09if (num < len)isPrime(start + 1, a, k);
}
int    main()
{
\x09int len = 100,kinds=0,a[100];
\x09int  n=20,m=1;
\x09cin>> m >> n ;
\x09for (int i = 1; i < len; i++) a[i] = 2 * i - 1;
\x09isPrime(2, a, len);
\x09for (int i = 1; i\x09{
\x09\x09if (a[i]>m && a[i] < n)  kinds++;
\x09\x09if (a[i] >= n) break;
\x09}
\x09cout << kinds << endl;
\x09return  0;
}
看了求幸运数C/C++代码?幸运数...的网友还看了以下:

有一列数,第一个数是3,第二个数是4,从第三个数开始,每个数都是它前面两个数的和的个位数.从这列数  2020-06-05 …

有若干个数,第一个数记为a1,第二个数记为a2,第N个数记为an,若a1=-1,从第二个数开始后面  2020-06-05 …

将八个数从左到右排成一行.从第三个数开始,每个数都恰好等于它前面两个数的和,如果第七个数和第八个数  2020-06-11 …

八个数排成一排,从第三个数开始,每个数都等于他前面两个数之和.现用六张纸片盖住了其中的六个数,只露  2020-06-11 …

有一列数字,第一个数为x的第一个数=1,第二个数为x的第二个数=3,从第二个数开始,每个数是左右相  2020-07-14 …

有一列数,第一个数是133,第二个数是57,从第三个数开始,每个数都是它前面两个数的平均数,那么,  2020-07-17 …

1.一列数,第一个是133,第二个是57,从第三个数开始,每个数都是它前面两个数的平均数,那么第2  2020-07-17 …

如下图,八个正数排成一排,从第三个数开始,每个数都等于它前面两个数的乘积.现在用六个纸片盖住了其中的  2020-11-17 …

八个数排成一排,从第三个数开始,每个数都等于他前面两个数之和.现用六张纸片盖住了其中的六个数,只露出  2020-11-24 …

有一列数,第一个数是100,第二个数是90,从第三个数开始,每个数都是它前面两个数的平均数.第三十个  2020-12-23 …