-3

因子を見つけてから各因子が素数であるかどうかを確認する代わりに、エラトステネスの篩を使用して数値の素因数を出力しようとしています。

 #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 に答える