так что я довольно новый программист, и я только начал задавать вопросы по Hackerrank. Я попробовал вопрос, и он компилируется и работает в автономном режиме ide. Но показывает ошибку на хакерранке. Быстрый ответ мне действительно помог бы.
Это виртуальное представление спирали простых чисел (для целей понимания)
Теперь задача Простые числа записываются в виде спирали, начиная с начала координат (0, 0) и перемещаясь, как показано на рисунке выше. Числа, показанные в правом столбце и нижней строке, являются номерами столбцов и номерами строк соответственно (т.е. координаты y и x)
Цель состоит в том, чтобы найти положение (координаты x и y) данного простого числа .
ОШИБКА Когда я запускаю код в hackerrank, работают 2 из 3 тестовых случаев. Но для одного тестового примера это показывает, что ошибка прервана из-за тайм-аута. Код, который я написал, выглядит следующим образом:
#include<iostream>
using namespace std;
int prime(int a)
{
int count, h=0;
for (int i = 2; i <= 12000000; i++)
{
count = 0;
for (int j = 2; j <= i; j++)
{
if(i%j==0)
{
count++;
}
}
if (count == 1)
{
h = h + 1;
}
if (a == i)
{
break;
}
}
return h;
}
void spiral(int h)
{
int stepnum=1, totalsteps = 2;
int x_coordinate = 0, y_coordinate = 0;
int operatn = 1;
for(int i=2;i<=h;i++)
{
if (stepnum <= (totalsteps/2))
{
x_coordinate = x_coordinate + operatn;
}
else
{
if (stepnum <= totalsteps)
{
y_coordinate = y_coordinate + operatn;
}
}
if (stepnum == totalsteps)
{
stepnum = 0;
operatn = -1 * operatn;
totalsteps = totalsteps + 2;
}
stepnum++;
}
cout << "x coordinate = "<<x_coordinate<< " y coordinate = "<<y_coordinate<<endl;
}
int main()
{
int t;
int* p;
cout<<"Enter the number of cases :"<< endl;
cin >> t;
int test;
p=(int*)malloc(t*4);
for (int i = 0; i < t; i++)
{
cin >> *(p+i);
}
for (int i = 0; i < t; i++)
{
test = prime(*(p + i));
spiral(test);
}
}