SPOJ вопрос № 2, время работы превышает!

68
10

Сначала в задаче № 2 "Спой", названной "Генератор праймов", я отправляю этот код и получаю превышение времени работы.

Проблема в:

Питер хочет сгенерировать некоторые простые числа для своей криптосистемы. Помоги ему! Ваша задача - сгенерировать все простые числа между двумя заданными числами!

Входные данные Входные данные начинаются с числа t тестовых случаев в одной строке (t <= 10). В каждой из следующих t строк есть два числа m и n (1 <= m <= n <= 1000000000, nm <= 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 до sqrt of j.

Я имею в виду это:

for(int f=2;f<(int)sqrt(j);f++)

Пожалуйста, помогите!: |

спросил(а) 2019-01-03T19:38:00+03:00 11 месяцев, 1 неделя назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема