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