solution.cpp 900 字节
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
#include <iostream>
using namespace std;

int a[500005];

int main()
{
    int i, k = 1;      //k表示a数组大小
    int m, n, sum = 0; //sum表示幸运数个数
    int temp;
    cin >> m >> n;
    for (i = 1; i <= 1000000; i += 2)
    {
        a[k++] = i;
    }
    temp = 2; //当前幸运数所处的序号位置
    while (temp <= 1000)
    {
        int b[500005], t = 1; //b记录幸运数
        for (i = 1; i < k; i++)
        {
            if (i % a[temp] != 0) //如果序号位置i不能被某一个幸运数整除,则将其存储到b数组
                b[t++] = a[i];
        }
        for (i = 1; i < t; i++)
            a[i] = b[i];
        temp++;
        k = t;
    }
    for (i = 1; i <= n; i++)
    {
        if (a[i] > m && a[i] < n) //注意幸运数的区间(不包含m和n)
        {
            sum++;
        }
    }
    cout << sum << endl;

    return 0;
}