使用Eratosthenes筛的主要因素

时间:2013-01-19 12:53:43

标签: c prime-factoring

尝试使用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上运行它既不显示任何错误也不打印任何内容。我无法弄清楚这个问题。为什么不打印? 感谢。

1 个答案:

答案 0 :(得分:0)

这部分:

while(k<=u)
{
    if(factors[k]==0)
        continue;

看起来很像无限循环。