Note that there are some explanatory texts on larger screens.

plurals
  1. POCannot calculate prime factors with a number with 12 digits in C
    primarykey
    data
    text
    <p>Im trying to learn alot more about C code by trying to do the examples on the Project Eular Page : <a href="http://projecteuler.net/problems" rel="nofollow">http://projecteuler.net/problems</a> At the moment im trying to work out the highest prime factor from the number 600851475143. Here is my code:</p> <pre><code>/* The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 600851475143 ?*/ #include &lt;stdio.h&gt; unsigned long long GetPrimeFactor(unsigned long long number) { /* printf("The number you typed was %d\n", number);*/ unsigned long long prime = 2; unsigned long long LargestPrime = 0; while (prime != 0) { if(number%prime == 0) { if(number == prime) { if(LargestPrime &lt; prime) LargestPrime = prime; printf("End of prime factors \nLargest Prime: %d\nEnding Number: %d\n", LargestPrime, number); break; } else if(LargestPrime &lt; prime) LargestPrime = prime; //divide number by prime number = number/prime; printf("Prime: %d\n", prime); } else { //get new prime prime = nextPrimeNumber(prime); } } } unsigned long long nextPrimeNumber(unsigned long long input) { unsigned long long nextPrimeNumber; while(input !=0) { if( input &lt; 0) { printf("The number you have entered is negative\n"); } else if (input &gt; 0) { nextPrimeNumber = input + 1; if(nextPrimeNumber%2 == 0 &amp;&amp; nextPrimeNumber != 2) { nextPrimeNumber += 1; } while(!isPrime(nextPrimeNumber)) { nextPrimeNumber += 2; } return nextPrimeNumber; } } } int isPrime(int number) { int i; int prime = 1; //true if(number == 2) prime = 0; //false if(number%2 == 0 || number &lt;= 1) prime = 0; else { for(i=3; i&lt;sqrt(number) &amp;&amp; prime == 1; i+=2) if(number%i == 0) prime = 0; } return prime; } int main(void) { unsigned long long number; printf("Enter a Number: \n"); scanf("%d", &amp;number); GetPrimeFactor(number); return 0; } </code></pre> <p>This code works for the number 13195 which is in the example, but goes bad when i try the larger numbers and im not sure whats wrong.</p> <p>output with large number 600851475143: prime: 3 prime: 29 prime: 5108231 etc. this cant be correct because the number cannot be divisible by 3 anyway.</p> <p>Cant work out whats going wrong so any help would be great</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload