В настоящее время я работаю над программой. программа работает отлично, но имеет проблемы с производительностью. код ниже.Проблема с производительностью в c, имея дело с 12-значным номером
#include<stdio.h>
int calculate(int temp)
{
int flag = 0,i = 2,tmp = 0;
for(i = 2;i < temp;i++)
{
if(temp % i == 0)
{
return 1;
}
}
}
int main()
{
long int i = 2,j,count = 0,n = 600851475143,flag = 0,prime = 0;
long int check;
while(i < n)
{
if(n % i == 0)
{
check = calculate(i);
if(check != 1)
{
prime = i;
printf(" Prime number is : %ld \n", prime);
}
}
i++;
}
printf(" Max prime number of %ld is : %ld \n",n,prime);
return 0;
}
Здесь я не могу получить максимальное число. может кто-нибудь сказать мне, что я должен делать, это занимает слишком много времени, что я должен сделать, чтобы быстро получить результат?
Вам нужен более эффективный алгоритм, например: https://en.wikipedia.org/ wiki/Sieve_of_Eratosthenes –
Пожалуйста, укажите, что должен делать код, что он делает и что вы думаете неправильно, также помогает. –
'600851475143' слишком длинный для' int', 'int calculate (int temp)' -> 'long calculate (long temp)', но, как указано @ KlasLinbäck, это не эффективный алгоритм. –