当前我正在开发一个程序。程序工作完美,但它有性能问题。代码如下。在处理12位数字时c中的性能问题
#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指出的那样,这不是一个有效的算法。 –