當前我正在開發一個程序。程序工作完美,但它有性能問題。代碼如下。在處理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指出的那樣,這不是一個有效的算法。 –