【发布时间】:2015-05-12 16:12:56
【问题描述】:
这是针对 SPOJ 问题 2 - http://www.spoj.com/problems/PRIME1/
我在这里引用它 -
问题: Peter 想为他的密码系统生成一些素数。帮助他!你的任务是生成两个给定数字之间的所有素数!
输入
输入以单行中的测试用例数量 t (t
输出
对于每个测试用例打印所有质数 p 使得 m
#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;
}
}
为什么这段代码不起作用?显示超出时间限制。
【问题讨论】:
-
你需要一个更好的算法。你有没有实现过sieve of eratosthenes?
-
我对编程比较陌生,但是是的,我正在研究筛子。我可以知道否决票的原因吗?我的意思是你们通常对新手这么苛刻吗?