计算素因子误差

时间:2017-01-24 16:25:30

标签: c variables prime-factoring

这不是一个复制线程,因为我不知道如何计算一个数字的素因子。我在代码中遇到问题,欢迎使用任何主题标题建议。

所以我的代码适用于数十亿的数字。但即使我使用长(64位),而不是在计算一段时间后给出我的素数因子,我的代码立即工作(当我给它一个巨大的数字时),它说没有找到素因子。(你可以运行代码,看看我在说什么)

编辑:我使用32位变量就是问题所在。我长期改变了很久。现在它可以工作,但对于大输入来说非常慢。

edit2:我在数组中保留了素数因素,并且它有很长的时间来处理大数字(50亿+)。当我停止使用数组并简单地打印结果时,我工作得更快。如果测试计算机限制,仍然工作缓慢。无论你的增长顺序有多好,如果你输入一个足够大的输入,你就会为你的cpu烦恼。很小的C(op)如何影响您对大C(n)值的算法的很好的例子。

edit3:此算法不适用于素数。

#include <stdio.h>

int main(void) {

long long number, halfTheNumber, arrayCounter = 0, primeNumberCounter = 2;
long long array1[100] = {0};

printf("Enter number to find its prime factors: ");
scanf("%llu", &number);

halfTheNumber = number / 2;
for(; primeNumberCounter <= halfTheNumber; primeNumberCounter++)
{
    while(number % primeNumberCounter == 0 && number > 1)
    {
        number /= primeNumberCounter;
        array1[arrayCounter] = primeNumberCounter;
        arrayCounter++;
    }
}

for(arrayCounter = 0; arrayCounter <= 99; arrayCounter++)
{
    printf("\n%lu. prime factor: %llu", arrayCounter, array1[arrayCounter]);
}

getchar();
return 0;
}

0 个答案:

没有答案