这不是一个复制线程,因为我不知道如何计算一个数字的素因子。我在代码中遇到问题,欢迎使用任何主题标题建议。
所以我的代码适用于数十亿的数字。但即使我使用长(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;
}