嘗試使用Erathosthenes篩選打印數字的主要因子,而不是找到因子,然後檢查每個因子是否爲質數。使用Eththosthenes篩選的主要因素
#include<stdio.h>
#include<math.h>
void primeFactors(int num)
{
int factors[100];
int i,j=0,u,k=0,l;
u=sqrt(num);
for(i=0;i<100;i++)
factors[i]=1;
for(i=2;i<=u;i++)
{
if(factors[i]==0)
continue;
if(num%i==0)
{
factors[j]=i;
l=factors[j];
k=2*factors[j];
j++;
while(k<=u)
{
if(factors[k]==0)
continue;
factors[k]=0;
k+=l;
}
}
}
for(i=2;i<=u;i++)
if(factors[i]!=1)
printf("%d\n",factors[i]);
}
int main()
{
int n=797;
primeFactors(n);
return 0;
}
在Xcode上運行時,它既不顯示任何錯誤也不打印任何東西。我無法弄清楚這個問題。爲什麼不打印? 謝謝。
要求人們在代碼中發現錯誤並不是富有成效的。您應該使用調試器(或添加打印語句)來隔離問題,然後構造一個[最小測試用例](http://sscce.org)。 –
@Oli Charlesworth - 謝謝。我嘗試過使用調試器,但它立即切換到組裝視圖,並且添加打印語句也沒有多大幫助。 –
適當的打印語句應該允許您準確地跟蹤程序正在進行的操作,以及它爲何做出各種決定。然後,通過將這些信息與您預期發生的事情進行比較來使用這些信息。這就是調試的內容。 –