Mein Programm zur Berechnung des größten Primefaktors von 600851475143 bleibt hängen und hört während der Kompilierung und Ausführung nie auf. Weiß jemand, warum es die Ausführung nicht beendet?C-Programm zum Auffinden von Primfaktoren, Kompilierung stoppt nicht
#include <stdio.h> //Edited the #includes(typo) to #include
int main (void)
{
long long int num = 600851475143 ;
long long int factorCount;
long long int bigFactor;
for (long long int i=1 ; i <= num; i+=2)// Iterating through all numbers from 2, smaller than or equal to num
{
if (num % i == 0) // If the number "i" is a factor of num i.e. If "i" perfectly divides num
{
factorCount = 0;
//checking whether a factor "i" , is a prime factor of num
for (long long int j=2; j <= i ; j++ ) // Iterating through all numbers from 2, smaller than or equal to "i"
{
if (i % j == 0) // If the number "j" prefectly divides or is a factor of "i"
{
factorCount++; //Add 1 to factorCount
};
};
if (factorCount == 1) // If factorCount has not exceeded 1 i.e., the number "i" is a prime number
{
bigFactor = i;
};
};
};
printf("The largets prime factor of %lli is %lli\n",num,bigFactor);
return 0;
}
_never stoppt während der Kompilierung und execution_ - das sind zwei sehr verschiedene Dinge. Wenn es während der Kompilation niemals aufhört, erreichen Sie niemals die Ausführung. Um während der Ausführung niemals zu stoppen ... haben Sie nach VIELEN Loops gefragt. _Never_ ist eine sehr lange Zeit, und Sie haben nicht lange genug gewartet, um zu bestimmen, dass es nie aufhören wird. Ihre Methode zu bestimmen, ob eine Zahl prim ist, ist aus diesem Grund nicht sinnvoll. – mah
Kompiliert es überhaupt? # beinhaltet? –
Wie Sie vielleicht wissen, ist 600851475143 Prime, also wird dieses Programm für eine lange Zeit laufen. (Eine der ersten Abkürzungen bei der Durchführung von Brute-Force-Factoring besteht darin, Kandidatenfaktoren nur bis zur Quadratwurzel der zu faktorierenden Zahl zu testen. Sie könnten also "nur" 387573-Schleifen anstelle von 300425737571 verwenden.) –