这是参考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;
}
}
为什么这段代码不起作用?它显示超出时间限制。
答案 0 :(得分:0)
你应该学习在任何数字a和b之间产生素数的筛选方法,其中a-b <= 1000000,所以使用它并且它将被接受。 不要担心投票只是学习最初都面临这个问题的概念,所以尽情享受编码。