内存分配解决方案prob3 Project Euler

时间:2017-01-16 07:46:10

标签: c codeblocks

最后通过Python介绍编程后,我决定使用C开始编码。现在我正在使用项目euler,我正在尝试使用内存分配解决问题3以适应数组。我很清楚有很多简单的方法可以做到这一点,但我想知道如何以这种方式来扩展我的知识。每当我运行此代码时,由于某种原因,我会得到非常奇怪的数字。谁能告诉我如何做这个概念?这不是太多的代码,它可能看起来很长,因为我喜欢制作大量的空间。我想补充一点,当我使用像45或50这样的数字时它很好。当使用问题中的数字600851475143时,它会开始动作。

提前谢谢!

#include <stdio.h>

int newprim_fac(long long int n){

    int index=0;
    int i=2;
    long int MAXSIZE=100;
    int*W=(int*)calloc(1,MAXSIZE);

    while(n!=1){

        if(n%i==0){

            while(n%i==0){
                printf("\n\n           %d", i);
                n=n/i;
                W[index]=i;
                index++;
            }
        }
        i++;
        if(sizeof(W)>=MAXSIZE){
            *W=(int*)realloc(W,2*MAXSIZE);
        }
    }

    printf("\n\nsize of W is: %d\n", sizeof(W));

    for(i=0;i<sizeof(W);i++){
        printf("\n\n%d", W[i]);
    }

    free(W);
    return 0;
}

0 个答案:

没有答案