尝试使用 Erathothenes 筛子打印一个数的质因数,而不是找到这些因数,然后检查每个因数是否是质数。
#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 上运行它既不显示任何错误也不打印任何东西。我无法弄清楚这个问题。为什么不打印这个?谢谢。