计算两个数字之间的Primes的程序 - SPOJ问题2

时间:2015-05-12 16:12:57

标签: c++ logic primes

这是参考SPOJ问题2 - http://www.spoj.com/problems/PRIME1/

我在这里引用它 -

问题: 彼得想为他的密码系统生成一些素数。帮助他!你的任务是生成两个给定数字之间的所有素数!

输入

输入以单行中的测试用例的数量t开始(t <= 10)。在下一个t行的每一行中,有两个数字m和n(1 <= m <= n <= 1000000000,n-m <= 100000)由空格分隔。

输出

对于每个测试用例,打印所有质数p,使得m <= p <= n,每行一个数,由空行分隔的测试用例。

#include <iostream>
using namespace std;

int main() {
 // Prime Generator
 int cases;
 int z;

 cin >> cases;
 int lower[cases];
 int upper[cases];

 for (int l = 0; l < cases; l++) {
    cin >> lower[l];
    cin >> upper[l];
 }

 for (int n = 0; n < cases; n ++) {

    for (int i = lower[n]; i <= upper[n]; i++ ) {

        z = 1;
        for (int x = 2; x < i; x++) {
            if (i % x == 0) {
                z = 0;
                break;
            }
        }

        if (i == 1) {
            z = 0;
        }

        if (z == 1) {
            cout << i << endl;
        }
    }
    cout << endl;
 }
}

为什么这段代码不起作用?它显示超出时间限制。

1 个答案:

答案 0 :(得分:0)

你应该学习在任何数字a和b之间产生素数的筛选方法,其中a-b <= 1000000,所以使用它并且它将被接受。 不要担心投票只是学习最初都面临这个问题的概念,所以尽情享受编码。