尝试使用Erathosthenes筛子打印数字的素因子,而不是找到因子,然后检查每个因子是否是素数。
#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上运行它既不显示任何错误也不打印任何内容。我无法弄清楚这个问题。为什么不打印? 感谢。
答案 0 :(得分:0)
这部分:
while(k<=u)
{
if(factors[k]==0)
continue;
看起来很像无限循环。