首页 文章

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

提问于
浏览
-5

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

我在这里引用它 -

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

输入

输入以单行中的测试用例数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

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

相关问题