-3

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

4

1 回答 1

0

这部分:

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

看起来很像一个无限循环。

于 2013-01-19T14:00:37.660 回答