时间在执行期间耗尽

时间:2014-02-22 03:40:43

标签: c

这是Euler项目的第3个问题。什么是600851475143最大的主要因素。我已经完成了程序,但这个数字是一个12位数,我不得不采用数据类型。当我尝试执行小编号的程序,例如13195时,它工作正常,但是对于所需的数字,它没有!我尝试在网上各种编译器中运行它,也在我在PC上使用的Cygwin上运行它。但是在三次输出之后,这些计划就会停止前进。

HELP !!

#include<stdio.h>
int main()
{
    long long num = 600851475143;
    int i=1,j,k, big=0;
    // printf("\nEnter a number:");
    //scanf("%d",&num);
    while(i<=num)
    {
        k=0;
        if(num%i==0)
        {
            j = 1;
            while( j <= i)
            {
                if( i % j == 0)
                    k++;
                j++;
            }

            if(k==2)
            {
                printf("\n%d is a prime factor",i);
                if( i > big)
                    big = i;
            }
        }
        i++;
    }

    printf("\nBiggest prime factor is %d", big);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

#include<stdio.h>

int main(){
    long long num = 600851475143LL;
    long long i=1;//It must be the same type for num when was the prime.

    for(i=2;i*i<=num;++i){
        while(num % i ==0){
            num /= i;
        }
    }
    printf("\nBiggest prime factor is %lld", num == 1 ? i - 1 : num);
    return 0;
}