首先在名为prime generator的2 Spoj问题中,我发送此代码,然后得到 运行时间超过了。
问题是:
Peter想为其密码系统生成一些质数。救命 他!您的任务是生成两个给定之间的所有素数 数字!
输入输入以单个测试用例的数量t开头 线(t <= 10)。在接下来的t行中的每行中,都有两个数字m和 n(1 <= m <= n <= 1000000000,n-m <= 100000)用空格分隔。
输出对于每个测试用例,请打印所有质数p,以使m <= p <= n,每行一个数字,测试用例用空行分隔。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
for(int i=0;i<n;i++)
{
int a,b;
cin >> a >> b;
if(a==1)
a++;
for(int j=a;j<=b;j++)
{
int flag=0;
for(int f=2;f<j;f++)
{
if(j%f==0)
flag=1;
}
if(flag==0)
cout << j << endl;
}
cout << "\n";
}
}
在那之后,我发现我必须更改这一行代码,使其仅经过2到j的sqrt。
我的意思是
for(int f=2;f<(int)sqrt(j);f++)
请帮助!:|